![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Bo2nik |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 30 Пол: Мужской Реальное имя: Никита Репутация: ![]() ![]() ![]() |
Написал сортировку строк (на входе файл со строкой, задача отсортировать указатели и вывести по ним символы), а прога не хочет выводить отсортированную строку. Ошибка вроде с указателями, тока не могу понять где.
Код #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)); //вывод } } Может лучше будет если отдельную процедуру для сортировки сделать? Сообщение отредактировано: Bo2nik - 16.04.2008 14:30 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Посмотри сюда:
printf("%c\n",*(pa+i)); //вывод, и подумай, что будет храниться в i после цикла, и что, собственно, ты хочешь распечатать? |
Bo2nik |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 30 Пол: Мужской Реальное имя: Никита Репутация: ![]() ![]() ![]() |
подумай, что будет храниться в i после цикла, и что, собственно, ты хочешь распечатать? короче я опять замохал с этим выводом, вот так надо было: Код printf("%s\n",line1); однако, если ввести большую строку, например fafzzasasdasffsadfadafag результат будет следующим: aaaffsszz aaddfffss aaadfg Сообщение отредактировано: Bo2nik - 16.04.2008 15:40 |
Bo2nik |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 30 Пол: Мужской Реальное имя: Никита Репутация: ![]() ![]() ![]() |
Цитата однако, если ввести большую строку, например fafzzasasdasffsadfadafag результат будет следующим: aaaffsszz aaddfffss aaadfg с этим тоже замохал, надо было вот так: Код fgets (line1,100,fp1); |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Ну, в принципе, вот это никаких лишних символов не выдает:
printf("%s\n",pa);(если у тебя одна строка в файле, и нет символа перевода строки, потому что fgets забирает строку включая символ "\n") |
Bo2nik |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 30 Пол: Мужской Реальное имя: Никита Репутация: ![]() ![]() ![]() |
Спасибо.
Сообщение отредактировано: Bo2nik - 17.04.2008 15:04 |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 14:26 |