【发布时间】:2016-02-11 01:51:03
【问题描述】:
我对这里的 if else 语句感到困惑。我的源代码能够对txt文件中的数据进行fscan,并且能够成功地printf。
我喜欢做的下一步是设置 if else 语句,如果 src 介于 1-1024 之间,然后将该行写入另一个 txt 文件,否则如果超过 1024 则应该写入另一个 txt 文件。
我一直在尝试结合下面的两个代码,但无法让它工作。
do {
test = fscanf(inFile, "%d:%d:%d:%d:", &src, &dest, &type, &port);//read line from file
fgets(data, 100, inFile);
printf("%d %d %d %d %s", src, dest, type, port, data);
} while (test != EOF);
if (src >= 1 && src <= 1024){
FILE *outFile = fopen("data_1.txt", "w");
fprintf(outFile, "%d %d %d %d %s", "data_1.txt");
//outFile = cfopen("data_1.txt", "w"); //Open file for writing
//fprintf("%d %d %d %d %s", src, dest, type, port, data);
}
else {
fclose(outFile);//must always close file once done
}
fclose(outFile);
fclose(inFile); //must always close file once done
return 0;
}
【问题讨论】:
-
输出例程中的
printf应该是fprintf(outFile, etc)吗?否则,您将输出到 stdio,而不是 data_1.txt。 -
你为什么打电话给
fscanf,然后是fgets?从同一个文件指针?一个或另一个就足够了吗? -
@Mike 是的,我需要更改 printf 部分
-
@David,这是因为数据的最后一部分包含字符和空格... fscanf 不起作用,所以我必须在最后一部分使用 fgets
-
在什么方面不起作用?实际发生了什么?你期望会发生什么?在
src和dest测试中,当值介于 1 和 1024(含)之间时(空)if块中的代码将运行,任何其他值 - 包括 0、负数和大于 1024 的值 -将导致else块中的代码运行。
标签: c if-statement fopen scanf