char *str;
while(1)
{
printf("$$$$>");
scanf("%s",str);
}
在这段代码中,我只想打印命令提示符。当用户输入任何内容时,什么也不会发生,并再次打印命令提示符。但 scanf() 运行一次,然后循环打印 $$$$> 。 当我尝试采用字符数组而不是 str 指针时,代码就会运行。 为什么?
最佳答案
char *str;
您使用了str
但没有初始化它。在另一个函数(如 scanf
)中使用未初始化的指针会导致程序崩溃。
您可以通过 str
指针的 malloc
(动态分配)来解决该问题,但对于这种简单的用法,您可以使用数组代替。
char str[100] = "";
while(1)
{
printf("$$$$>");
// scanf("%s",str); // not recommended
fgets( str, sizeof( str ), stdin ); // fgets is better
}
关于c - 在循环中使用 printf 然后 scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38673272/