Помощь - Поиск - Пользователи - Календарь
Полная версия: Сортировка строк. Си.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Bo2nik
Написал сортировку строк (на входе файл со строкой, задача отсортировать указатели и вывести по ним символы), а прога не хочет выводить отсортированную строку. Ошибка вроде с указателями, тока не могу понять где.
Код

#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
Посмотри сюда:
printf("%c\n",*(pa+i)); //вывод
, и подумай, что будет храниться в i после цикла, и что, собственно, ты хочешь распечатать?
Bo2nik
Цитата(volvo @ 16.04.2008 15:39) *

подумай, что будет храниться в i после цикла, и что, собственно, ты хочешь распечатать?


короче я опять замохал с этим выводом, вот так надо было:
Код

printf("%s\n",line1);


однако, если ввести большую строку, например fafzzasasdasffsadfadafag

результат будет следующим:
aaaffsszz
aaddfffss
aaadfg
Bo2nik
Цитата

однако, если ввести большую строку, например fafzzasasdasffsadfadafag
результат будет следующим:
aaaffsszz
aaddfffss
aaadfg


с этим тоже замохал, надо было вот так:
Код

fgets (line1,100,fp1);

volvo
Ну, в принципе, вот это никаких лишних символов не выдает:
printf("%s\n",pa);
(если у тебя одна строка в файле, и нет символа перевода строки, потому что fgets забирает строку включая символ "\n")
Bo2nik
Спасибо.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.