我想使用scanf("%ms, &p)
功能,在下面的代码。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char *p;
int n;
n = scanf("%ms", &p);
if (n == 1) {
printf("read: %s\n", p);
free(p);
}
else {
printf( "%d, No matching characters\n", n);
}
return 0;
}
这应该分配内存动态避免缓存器溢出。 语法%ms
应该是POSIX系统。 然而在OSX(高塞拉利昂),这是行不通的:代码被执行,则scanf
结果是0,它不会停止程序等待用户输入。
如果我做:
if (n == 0) {
printf("read: %s\n", p);
free(p);
}
我看到有以下错误malloc
:
malloc: *** error for object 0x7ffeeb91f9c8: pointer being freed was not allocated
这是为什么?