我似乎無法弄清楚爲什麼這只是打印數組的第一個位置。該文件包括字母,標點符號和空格。這似乎是閱讀這一切正常,只是沒有打印出正確從陣列打印文本
#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'。 –
所以我做了這些改變,現在它似乎只打印出文本文件的最後一行 –
顯示您所做的更改 –