0

我对编程很陌生,我在学校做过一些,但他们只教基本功能,如 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);
    }
4

1 回答 1

0

你的代码有很多问题,但是......你的特殊问题是getche()读取一个字符,如果是\e你做某事,但如果是另一个字符,那么它就丢失了!

使用您选择的功能 (getche()gets()),您可以执行以下操作:

while (1)
{
    char c = getche();
    if (c == '\e')
        break;
    txt[0] = c;
    gets(txt+1);
    /* ... */
}

我认为这不会删除第一个字符,但会因空行而失败。我将把它作为练习留给读者。

于 2015-11-06T08:44:02.327 回答