char *str;
while(1)
{
printf("$$$$>");
scanf("%s",str);
}
在这段代码中我只想打印一个命令提示符。当用户输入内容时,没有任何反应,并再次打印命令提示符。但是scanf()运行一次,然后是$$$$>循环打印。 当我尝试使用字符数组而不是str指针时,代码运行。 为什么呢?
答案 0 :(得分:4)
char * str;
您使用NAT
而未初始化它。在str
之类的另一个函数中使用未初始化的指针是程序崩溃的一个方法。
您可以通过scanf
(动态分配)修复malloc
指针的问题,但是对于这种简单的用法,您可以改为使用数组。
str
答案 1 :(得分:2)
因为你没有分配一个str可以指向的内存缓冲区,在str decleration下添加这一行:
str=malloc(sizeof(char)*1000);
答案 2 :(得分:0)
在声明指针后,必须将内存分配给字符串。您可以使用malloc或calloc函数来完成它。
char *str = (char*) malloc(sizeof(char) * 100);
或
char *str = (char*) calloc(100, sizeof(char));