Đối với bất cứ lý do các bản in mã sau (null):scanf động phân bổ
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *foo;
scanf("%ms", &foo);
printf("%s", foo);
free(foo);
}
Tôi đang cố gắng để cấp phát bộ nhớ cho một chuỗi động nhưng như tôi đã nói trước đó chương trình của tôi chỉ đơn giản là kết quả đầu ra (null). Tôi đã làm việc xung quanh điều này bằng cách tạo một hàm sử dụng getche và realloc nhưng dường như vô nghĩa do thực tế là tôi cũng phải lập trình điều gì sẽ xảy ra nếu người dùng nhập backspace, tab, v.v. Nhưng như tôi đã nói đó chỉ là một công việc xung quanh và tôi thà biết tại sao đoạn code trên không hoạt động ...
Thông tin bổ sung:
tôi đang sử dụng v7.00 Pelles C IDE và biên soạn với C11 chuẩn
'% ms' có ý định làm gì? –
@Greg Cờ m phải tự động cấp phát bộ nhớ để chứa đầu vào. –
Đó có phải là tiêu chuẩn không? Tôi không thấy điều đó trong tài liệu 'scanf' của tôi. –