Считывание строк из файла и их сортировка - C (СИ)
Формулировка задачи:
дана задача:Описать процедуру sortStrings(S0, S1), считывающую все строки из файла с именем S0 и записывающую эти строки в файл S1. Строки должны быть отсортированы в лексикографическом порядке. Я написала программу...но из исходного файла:
c
a
b
в результате получаю:
ba
c
подскажите в чем ошибка..пожалуйста
#include <stdio.h>
#include <memory.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 1000
void sortstring(char *input, char *output){
FILE *fileinput,
*fileoutput;
char **str = NULL;
int n = 0;
int i;
fileinput = fopen(input, "r");
fileoutput = fopen(output, "w");
while(!feof(fileinput)){
str = (char **)realloc(str,(n+1)*sizeof(char*));
str[n] =(char *)malloc(SIZE);
fgets(str[n], SIZE,fileinput);
n++;
}
qsort(str, n,sizeof(*str) ,(int(*)(const void *, const void *)) strcmp);
for (i = 0; i < n; i++){
fprintf(fileoutput,"%s", str[i]);
// free(str[i]);
}
fclose(fileinput);
fclose(fileoutput);
}
int main(){
sortstring("s0.txt","s1.txt");
return 0;
}Решение задачи: «Считывание строк из файла и их сортировка»
textual
Листинг программы
if (fgets(str[n], SIZE, fileinput))
{
n++;
}
Объяснение кода листинга программы
- В условии if проверяется, успешно ли считерирована строка из файла.
- Если считывание прошло успешно, то переменная n увеличивается на единицу.