在C上打破循环

时间:2014-01-10 11:56:24

标签: c gets

我正在尝试使用获取来存储名称/小短语

它应该包含39个字符,但在我输入第一个字符后,它返回到上一个周期。 (我有一个Do While While主要内容)

为什么它不能正常运作?

char nome[40];
printf("\nNome do Equipamento: ");
gets(nome);
strcpy(eq[n].nomeEquipamento, nome);

1 个答案:

答案 0 :(得分:1)

在您提供的链接中,scanf

之前有一个gets来电
printf("\nCodigo do Equipamento: ");    
scanf("%d",&codigo);     
eq[n].codDipositivo=codigo;
printf("\nNome do Equipamento: ");              
gets(nome);

Enter 键后,scanf调用会留下\n个字符。这个\n字符由gets读取,这就是您遇到此问题的原因 要使用此\n,请在getchar之后使用scanf

 printf("\nCodigo do Equipamento: ");    
 scanf("%d",&codigo);
 getchar();      // To comsume '\n'      
 eq[n].codDipositivo=codigo;
 printf("\nNome do Equipamento: ");              
 gets(nome);  

现在关于gets;很高兴认为邪恶gets现在是历史。请改用fgets 并且也不要使用strcpy,而是可以使用strncpy(在使用之前,请仔细阅读提供的链接)。