为什么即使文件存在并且文件已正确打开和关闭,fprintf()也不打印任何内容?

时间:2019-06-03 13:05:11

标签: c printf

这是我关于Files的第一个练习,我必须编写一些代码,以便在控制台中输入一个单词时,它就会打印在文件中。如果输入单词“ fine”(结束是意大利语),则程序结束。看来文件已正确打开和关闭,程序读取了插入的字符,但文件仍然为空。

我尝试以各种模式打开文件,尝试打印读取的字符数,甚至尝试删除文件(但即使添加了exit(1),它实际上也不会退出。

#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

int main() {
    FILE * fp;
    char s[64];
    if ((fp = fopen("prova.txt", "r+")) == NULL) {
        printf("Error.\n");
        exit(1);
    }
    do {
        scanf("%s", s);
        if (strcmp("fine", s) != 0) {
            fprintf(fp, "%s ", s);
        }
    } while (strcmp("fine", s) != 0);
    fclose (fp);
    return 0;
}

它应该将所有单词保存在文本文件中,但仍为空白。

2 个答案:

答案 0 :(得分:0)

您的程序看起来正常。您很有可能正在检查错误的文件。

有根据的猜测:您正在使用某些IDE。在这种情况下,将创建文件 ,但会在其他位置创建文件。可以肯定的是,在程序开头的某个位置打印工作目录(man getcwd),然后在该文件中查找文件。

答案 1 :(得分:-1)

您必须使用“ w”打开具有写权限的新文件

更改

if ((fp = fopen("prova.txt", "r+")) == NULL) {

使用

if ((fp = fopen("prova.txt", "w+")) == NULL) {

编辑:也许我没有解释自己,如果文件不存在,r +将失败,对其进行更改