Я не могу понять, почему это только печать первой позиции массива. Файл содержит буквы, знаки препинания и пробелы. Кажется, что читает все это правильно, просто не печатает правильноПечать текста из массивов
#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'. –
Итак, я сделал эти изменения, и теперь кажется, что печатается только последняя строка текстового файла. –
Покажите сделанные вами изменения. –