c - 如何在c中输出char数组

标签 c

这里是新手, 我正在尝试从一个 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]);

  1. http://en.cppreference.com/w/cpp/io/c/fprintf

关于c - 如何在c中输出char数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625148/

相关文章:

指针C(链表)上的困惑

c - 释放后如何将arraylist设置为空?

将无符号表达式与 0 进行比较

读取二维数组时出现C错误

c - C 算术中顺序很重要吗?

c - 如何将两个数组组合成一个交替元素?

C字符串转换

c - 如何从 malloc 区域执行一段代码

c - 管道和流程

c - 将两根绳子放在一起