这是我关于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;
}
它应该将所有单词保存在文本文件中,但仍为空白。
答案 0 :(得分:0)
您的程序看起来正常。您很有可能正在检查错误的文件。
有根据的猜测:您正在使用某些IDE。在这种情况下,将创建文件 ,但会在其他位置创建文件。可以肯定的是,在程序开头的某个位置打印工作目录(man getcwd
),然后在该文件中查找文件。
答案 1 :(得分:-1)
您必须使用“ w”打开具有写权限的新文件
更改
if ((fp = fopen("prova.txt", "r+")) == NULL) {
使用
if ((fp = fopen("prova.txt", "w+")) == NULL) {
编辑:也许我没有解释自己,如果文件不存在,r +将失败,对其进行更改