我在阅读C中的文件时遇到问题 我想逐行阅读文件 每行包含25个字符,每个字符都有一个特殊值,我必须在其他函数中使用。我的代码:
int read_file(const char* filename){
FILE* file = fopen(filename, "r");
char line[25];
int i;
int counter = 0;
while (fgets(line, sizeof(line), file))
{
if (counter == 0)
{
counter++;
}
else
{
for(i = 0; i < 25 ; i++){
printf("%s",line[i]);
}
}
}
fclose(file);
return 0;
}
我必须做一些其他事情然后打印它,但是当我尝试这个代码时,它会产生错误,所以做其他事情也会做同样的事情。 所以我的代码需要逐行读取文件然后我需要能够逐个字符地读取它。
答案 0 :(得分:2)
%c
通过printf
打印一个字符。固定代码:
#include <stdio.h>
int read_file(const char* filename){
FILE* file = fopen(filename, "r");
char line[27]; /* an array of 25 elements isn't enough to store lines of 25 characters: +1 for newline and +1 for terminating null character */
int i;
int counter = 0;
if (file == NULL) return 1; /* check if the file is successfully opened */
while (fgets(line, sizeof(line), file))
{
if (counter == 0)
{
counter++;
}
else
{
for(i = 0; i < 25 ; i++){
printf("%c",line[i]); /* use %c instead of %s to print one character */
}
}
}
fclose(file);
return 0;
}
答案 1 :(得分:1)
printf("%s",line[i]); // %s expects char * and line[i] is a char
这应该是 -
printf("%c",line[i]); // to print character by charcter
要存储25
个字符,请将line
声明为 -
char line[25+1]; // +1 for null character
注意 - 正如您在%s
的评论中所提出的那样可以用作 -
printf("%s",line); // no loop required