这里是新手, 我正在尝试从一个 txt 文件中扫描字符并将其输出到另一个 txt 文件。我认为我的问题是转换说明符将 int 转换为 char,所以我的结果是奇怪的字符。感谢您的帮助。
#include <stdio.h>
#define NROW 676
#define FILEIN "lettercombo.txt"
#define FILEOUT "lettercomboout.txt"
int main(void) {
//Variables
int i;
char combo [NROW];
FILE *lcombo;
FILE *lcomboout;
//Writes output file or overwrites previous one
lcomboout = fopen(FILEOUT,"w");
// Open file and read data into array
lcombo = fopen(FILEIN,"r");
for (i=0; i<677; i++)
fscanf(lcombo,"%c",&combo[i]);
for (i=0; i<677; i++)
fprintf(lcomboout,"%c \n",combo[i]);
return 0;
}
更新帖子: 我忘了在同一文件夹中添加输入文件。感谢您的帮助,它有效:)
最佳答案
改变
fscanf(lcombo,"%i",&combo[i]);
到
fscanf(lcombo,"%c",&combo[i]);
当您扫描字符时。
改变
fprintf(lcomboout,"%c \n",&combo[i]);
到
fprintf(lcomboout,"%c \n",combo[i]);
%c
接受一个值,而不是地址。
并使用fclose
关闭文件。
UPD
代码读取NROW
个字符,而不是NROW
行,更改为
for (i=0; EOF != fscanf(lcombo,"%c",&combo[i]); ++i);
或者使用%s
读取行,检查scanf/fscanf
的返回值是个好方法。
您可以保留已成功读取的字符数。例如:
int len;
...
for (len=0; EOF != fscanf(lcombo,"%c",&combo[len]); ++len);
for (i=0; i<len; i++)
fprintf(lcomboout,"%c \n",combo[i]);
关于c - 如何在c中输出char数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625148/