gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:13 24 4
gpt4 key购买 nike

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

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