使用printf然后在循环中使用scanf

时间:2016-07-30 11:13:12

标签: c printf scanf

char *str;
while(1)
{
    printf("$$$$>");
    scanf("%s",str);
}

在这段代码中我只想打印一个命令提示符。当用户输入内容时,没有任何反应,并再次打印命令提示符。但是scanf()运行一次,然后是$$$$>循环打印。 当我尝试使用字符数组而不是str指针时,代码运行。 为什么呢?

3 个答案:

答案 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));