我不明白程序的这部分代码有什么问题。 我正在使用while cicle来要求用户插入一个字符串,该字符串将保存为临时(char * name)字符串,然后作为函数的参数传递。但问题是当我使用scanf函数时。这是代码:
char *name;
size_t i=0;
while(i<size){
printf("Insert #%zu item name: ",i+1);
scanf("%s",name);
printf("Insert #%zu item price: ",i+1);
scanf("%u",&price);
item=item_cons(item,name,price);
i++;
}
答案 0 :(得分:2)
在您的代码中
scanf("%s",name);
你没有为指针name
分配内存。它指向无效的内存位置,并尝试使用它来存储将调用undefined behavior的任何值。
您需要先将内存分配给name
,然后才能将内存存储在其指向的内存中。你可以
name
数组,例如char name[32] = {0};
,然后像scanf("%31s",name);
一样使用它(通常首选),或者
char *name
或系列将动态内存分配到malloc()
。答案 1 :(得分:0)
尝试使用 char name [100] = {'\ 0'} 这假设你得到的更大的名字是10