我似乎无法弄清楚为什么这只是打印阵列的第一个位置。该文件包括字母,标点符号和空格。它似乎是正确读取它,只是没有正确打印
#include <stdio.h>
#define LENGTH 520
char text[LENGTH];
void readDataFile();
void printScreen(char text[], int i);
int main() {
readDataFile();
return 0;
}
void readDataFile(){
int i=0;
FILE* fp = fopen("text.txt","r");
while((fgets(&text[i], LENGTH, fp)) !=NULL){
printScreen(&text[i], i);
i++;
}
fclose(fp);
}
void printScreen(char text[],int i){
printf("%c",text[i]);
}
这些是我所做的更改,现在只打印出文本文件的最后一行。
#include <stdio.h>
#define LENGTH 520
char text[LENGTH];
void readDataFile();
void printScreen(char text[], int i);
int main() {
readDataFile();
return 0;
}
void readDataFile(){
int i=0;
FILE* fp = fopen("text.txt","r");
while((fgets(text, LENGTH, fp)) !=NULL){
printScreen(text, i);
i++;
}
fclose(fp);
}
void printScreen(char text[],int i){
printf("%s",text);
}
答案 0 :(得分:0)
我可以建议您使用其他方式打印整个文件吗?
用以下函数替换函数readDataFile():
void readDataFile(){
int nbread;
int fd;
char buf[2048];
fd = open("text.txt", O_RDONLY);
while ((nbread = read(fd, buf, 2048)) != 0)
{
buf[nbread] = '\0';
printf("%s\n", buf);
}
}
不要忘记在文件开头添加库fcntl:
#include <fcntl.h>
祝你好运! :)
答案 1 :(得分:0)
fgets()一次接受一行并将其存储在作为第一个参数提供的字符串中。看起来你正在遍历文件的每一行并从中打印一个字符。你应该尝试的是:
while((fgets(text, LENGTH, fp)) !=NULL){
printf("%s", text);
}