Scanf返回意外值

时间:2014-10-31 09:55:10

标签: c scanf

我正在尝试在函数中使用scanf 在第一次使用时,代码工作正常,但在第二次使用时,scanf不起作用 变量的值不会改变,但我需要输入一些东西 这是我的代码的一部分:

char *choix;
choix=(char *)calloc(20,sizeof(char));
printf("Saisissez le nom du fichier que vous voulez charger : ");
while ( getchar() != '\n' );
scanf("%s", choix);
lab=load(choix);
printf("\n%s\n",lab.nom);
free(choix);

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

停止使用scanf()这样的东西,它有点难以使用。

相反,使用fgets()从用户读取整行,然后根据需要解析该行。然后,您可以删除本土输入的刷新代码。

答案 1 :(得分:0)

我发现了问题。我尝试在choix中设置var lab.nom,而不设置malloc lab.nom

我只是添加lab.nom=malloc(sizeof(char)*(strlen(choix)+1));,它运行正常。 谢谢你的帮助。