gpt4 book ai didi

c - 在 C 中读写文件没有给出正确的输出

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:55 25 4
gpt4 key购买 nike

我有一个输入文件,格式如下:

C G F 0.89402944 I -628131597 C U F 0.8987373 C F C N F 0.046165943 C K I -898862630 F 0.20252013 I -1074797352 F 0.11681563 F 0.88717264 F 0.7676326 I -817826750

目标是创建 3 个新文件。一个文件将包含字符,另一个将包含整数,第三个将包含 float 。

我应该先读取第一个字符来读取输入文件。这个字符会告诉我下一个字符串是什么。因此,例如,第一个字符是 C,这意味着下一个字符序列将是一个 Char。然后我读取下一个字符,它是一个 F,这意味着下一个字符序列将是一个 float ,依此类推。

#include<stdio.h>

int main(int arg, char * argv[]){
FILE * intsFile = fopen("ints.txt", "w");
FILE * charsFile = fopen("chars.txt", "w");
FILE * floatsFile = fopen("floats.txt", "w");

FILE * inputFile = fopen("input.txt", "r");

char characters;
int integers;
float floats;

char flag;

while(fscanf(inputFile, "%c", &flag) != EOF){
if (flag == 'C'){
fscanf(inputFile, "%c", &characters);
fprintf(charsFile, "%c ", characters);
}
if (flag == 'F'){
fscanf(inputFile, "%i", &integers);
fscanf(inputFile, "%i ", integers);
}
if (flag == 'I'){
fscanf(inputFile, "%f", &floats);
fscanf(inputFile, "%f ", floats);
}
}

return 0;
}

但是,我的输出很奇怪。我的 chars.txt 文件中没有任何内容,我的 ints 文件中没有任何内容,我的 floats 文件包含重复值。这是怎么回事?

最佳答案

您可以使用以下代码修复它:

#include<stdio.h>

int main(int arg, char * argv[]){
FILE * intsFile = fopen("ints.txt", "wt");
FILE * charsFile = fopen("chars.txt", "wt");
FILE * floatsFile = fopen("floats.txt", "wt");

FILE * inputFile = fopen("input.txt", "r");

char characters;
int integers;
float floats;

char flag;

while(fscanf(inputFile, "%c", &flag) != EOF){
if (flag == 'C'){
fscanf(inputFile, " %c", &characters); //fix
fprintf(charsFile, "%c ", characters);
}
if (flag == 'F'){
fscanf(inputFile, "%f", &floats);//fix. wrong order with integer
fprintf(floatsFile, "%f ", floats);//fix
}
if (flag == 'I'){
fscanf(inputFile, "%i", &integers);//fix. wrong order with float
fprintf(intsFile, "%i ", integers);//fix
}
}

fclose(intsFile);//fixes
fclose(charsFile);
fclose(floatsFile);
fclose(inputFile);

return 0;
}

关于c - 在 C 中读写文件没有给出正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42167475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com