我有一個輸入文件,格式如下:閱讀和編寫C文件是不是給正確的輸出
CGF 0.89402944我-628131597 CUF 0.8987373 CFCNF 0.046165943 CKI -898862630˚F0.20252013我-1074797352˚F0.11681563 ˚F0.88717264˚F0.7676326 我-817826750
的目標是創建3個新的文件。一個文件將包含字符,另一個將包含整數,第三個將包含浮點數。
我應該通過第一次讀取第一個字符來讀取輸入文件。這個角色會告訴我下一個字符串是什麼。因此,例如,第一個字符是C,這意味着下一個字符序列將是Char。然後我讀下一個字符,這是一個F,這意味着下一個字符序列將是一個浮點數,依此類推。
#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文件中沒有任何內容,並且我的浮動文件包含重複值。這裏發生了什麼?
在閱讀一個「C」,下一個字符是下面的空間,而不是你想讀的字符。嘗試'fscanf(inputFile,「%c」,&characters);'(注意'%c'前面的空格)在掃描字符之前跳過空格。 – Dmitri
將fscanf替換爲'f'和'I'的fprintf。檢查是否需要輸出文件的「wt」標誌才能使用「文本」模式。 – DraganS
你寫的I和F是不正確的剪切和粘貼,他們應該說'fprintf(floatsFile etc' – pm100