我似乎无法弄清楚为什么这只是打印数组的第一个位置。该文件包括字母,标点符号和空格。这似乎是阅读这一切正常,只是没有打印出正确从阵列打印文本
#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);
}
第二次循环迭代会导致缓冲区溢出。 '&text [1]'只有'LENGTH-1'字符的存储空间可用。它每次都应该是'&text [0]','printScreen'应该使用'%s'而不是'i'。 –
所以我做了这些改变,现在它似乎只打印出文本文件的最后一行 –
显示您所做的更改 –