【发布时间】:2015-11-06 08:38:29
【问题描述】:
我对编程很陌生,我在学校做过一些,但他们只教基本功能,如 printf、scanf、for、while、指针。我正在制作一个小程序,它将用户输入打印到文件中,但是当文本写入文件时,第一个单词之后的每个单词的第一个字母都丢失了,我不知道为什么。有人可以解释一下第一个字母发生了什么,如果可以的话,请用简单的方式解释一下,谢谢你的回答。
这是我用来写入文件的函数。
void text(){
int e=1;
puts("After a sentance press enter to continue or esc to stop");`
printf("Enter text now\n");
FILE *fp;
fp=fopen("Text.txt","w");
End:while(e==1){
char txt[100];
puts(gets(txt),fp);
if(getche()=='\e')
e=0;
goto End;
} //end of while
fclose(fp);
}// end of function
新代码
void text(){
int e=1;
puts("After ending a sentance press enter to continue or esc to stop");
printf("Enter text now\n");
FILE *fp;
fp=fopen("Text.txt","w");
while(e==1){
char txt[100];
fgets(txt,100,stdin);
fwrite(txt,sizeof(char),sizeof(txt),fp);
if(getche()=='\e'){
break;
}
else;
}
fclose(fp);
}
【问题讨论】:
-
你认真使用
goto了吗?这是不好的做法。 这里很清楚,但仍然...... -
另外,你为什么不使用
fgets输入和fprintf写入文件? -
我尝试使用 break;但它并没有立即打破循环
-
@Tim:
break立即中断循环,您的goto什么也不做,因为您要回到循环的开头,无论如何,如果没有goto,它会回到同一个地方. -
你的意思是这样的: fprintf(fp,fgets(txt,100,stdin),"%s"); ?没用