0

我想从键盘输入文本并将输入保存到文件中。

这是我尝试过的代码:

    char txt[1024];
        char nomFichier[50];
        char emp[100];
        char empEtNomFichier[150];
        printf("\nDonner le nom du fichier : ");
        scanf("%s", &nomFichier);
        printf("\nDonner l'emplacement du fichier : ");
        scanf("%s", &emp);
            snprintf(empEtNomFichier, sizeof(empEtNomFichier), "%s/%s", emp, nomFichier);
            fichier = fopen(empEtNomFichier,"a+");
            printf(empEtNomFichier);
            printf("\nEnter le text : ");
            while(!feof(stdin)) {
                fgets(txt, 1024, stdin);
                printf(stdin);
            if(strlen(txt) == 0) break;
            fputs(txt, fichier);
}

printf("End.");

问题是用户完成输入我想跳过输入并显示“结束”。while 循环后的消息。

4

2 回答 2

1

简短回答:仅包含 Ctrl+D 字符 (*n*x) 或 Ctrl+Z 字符 (Windows)(我认为)的行应该结束输入并使 feof(stdin) 返回非零值。

长答案:这是基本概念,但它是冰山的可见部分。当涉及到文本输入时,您的代码包含几个错误,有些大有些小。

于 2013-10-02T13:12:56.407 回答
1

你怎么知道用户何时完成?

您发布的代码将一直持续到用户按下Ctrl+d,这会将文件结尾发送到输入流。

fgets存储换行符,因此您需要检查是否txt只包含换行符。

于 2013-10-02T13:13:38.550 回答