Автор: Bo2nik 16.04.2008 18:27
Написал сортировку строк (на входе файл со строкой, задача отсортировать указатели и вывести по ним символы), а прога не хочет выводить отсортированную строку. Ошибка вроде с указателями, тока не могу понять где.
Код
#include "stdafx.h" #include <stdio.h> #include <string.h> main() { char line1[20]; int i,j,k,b; k = 0; FILE *fp1; fp1 = fopen ("text1.txt","r"); // файл со строкой while (!feof(fp1)) { fgets (line1,10,fp1); k = strlen(line1); char *pa = line1; // указатель на строку for (i = 1; i<k; i++) //сортировка пузырьком { for (j = 0; j<k-i; j++) { if (*(pa+j)>*(pa+j+1)) { b = *(pa+j); *(pa+j) = *(pa+j+1); *(pa+j+1) = b; } } } printf("%c\n",*(pa+i)); //вывод } }
Может лучше будет если отдельную процедуру для сортировки сделать?
Автор: volvo 16.04.2008 18:39
Посмотри сюда:
printf("%c\n",*(pa+i)); //вывод
, и подумай, что будет храниться в i после цикла, и что, собственно, ты хочешь распечатать?
Автор: Bo2nik 16.04.2008 18:49
Цитата(volvo @ 16.04.2008 15:39)
подумай, что будет храниться в i после цикла, и что, собственно, ты хочешь распечатать?
короче я опять замохал с этим выводом, вот так надо было:
Код
printf("%s\n",line1);
однако, если ввести большую строку, например fafzzasasdasffsadfadafag
результат будет следующим:
aaaffsszz
aaddfffss
aaadfg
Автор: Bo2nik 16.04.2008 19:46
Цитата
однако, если ввести большую строку, например fafzzasasdasffsadfadafag результат будет следующим: aaaffsszz aaddfffss aaadfg
с этим тоже замохал, надо было вот так:
Код
fgets (line1,100,fp1);
Автор: volvo 16.04.2008 20:19
Ну, в принципе, вот это никаких лишних символов не выдает:
printf("%s\n",pa);
(если у тебя одна строка в файле, и нет символа перевода строки, потому что fgets забирает строку включая символ "\n")