【发布时间】:2021-12-04 04:46:31
【问题描述】:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main() {
FILE* fp;
FILE* ptr;
int cha, charac = 0, lines = 0, spaces = 0;
char ch;
fp = fopen("f.txt", "r");
while (ch != EOF) {
ch = fgetc(fp);
printf("%c", ch);
}
fclose(fp);
fp = fopen("fi.txt", "w+");
fprintf(fp, "%s %s %s %d", "We", "are", "in", 2021);
fclose(fp);
if (fp == NULL)
printf("Can't Open File");
else {
while ((cha = fgetc(fp)) != EOF) {
charac++;
if (ch == ' ')
spaces++;
if (ch == '\n')
lines++;
}
fclose(fp);
printf("Character %d\n", charac);
printf("Spaces %d\n", spaces);
printf("Lines %d\n", lines);
}
}
【问题讨论】:
-
几乎可以肯定不是 sigsegv 的情况,但
cha=fgetc(fp)和if(ch == ' ')看起来很奇怪,但如果没有完整的程序,就不可能完全确定您要做什么。 -
@Aaqib 将变量 cha 声明为 int 类型。 int cha;
-
@VladfromMoscow 还是一样的错误
-
@IanBush 我已经上传了完整的代码首先我读了一个文件然后我用“w+”打开了一个文件来写东西然后试图找出总行数和字符数跨度>
-
@Aaqib 需要检查文件是否打开成功即fp不等于NULL。
标签: c segmentation-fault