我试图为字符串分配内存,但无论我做什么,我总是为七个字符分配内存,甚至改变大小。有人能帮忙吗?
#include <stdio_ext.h>
#include <stdlib.h>
int main()
{
char *s;
int n;
printf("string size? ");
scanf("%d",&n);
__fpurge(stdin);
s = (char *)malloc((n+1) * sizeof(char));
if (!s)
{
printf("not possiblen");
exit(0);
}
printf("Enter the string: ");
fgets(s, sizeof(s), stdin);
printf("String: %sn",s);
free(s);
}
sizeof(s)
返回的指针大小为8。在您的情况下,您应该用这个fgets(s, n + 1, stdin);
重写这个fgets(s, sizeof(s), stdin);
。