第一个丢失后的任何单词的第一个字母
First letter of any word after the first goes missing
我对编程还很陌生,我在学校做过一些编程,但他们只教基本函数,如 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);
}
你的代码有很多问题,但是......你的特殊问题是 getche()
读取一个字符,如果它是 \e
你做某事,但如果它是另一个字符,那么它丢失了!
使用您选择的函数(getche()
和 gets()
)您可以:
while (1)
{
char c = getche();
if (c == '\e')
break;
txt[0] = c;
gets(txt+1);
/* ... */
}
这不会删除第一个字符,但会因空行而失败,我想..我会把它留给 reader.
作为练习
我对编程还很陌生,我在学校做过一些编程,但他们只教基本函数,如 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);
}
你的代码有很多问题,但是......你的特殊问题是 getche()
读取一个字符,如果它是 \e
你做某事,但如果它是另一个字符,那么它丢失了!
使用您选择的函数(getche()
和 gets()
)您可以:
while (1)
{
char c = getche();
if (c == '\e')
break;
txt[0] = c;
gets(txt+1);
/* ... */
}
这不会删除第一个字符,但会因空行而失败,我想..我会把它留给 reader.
作为练习