IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Сортировка строк. Си.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Никита

Репутация: -  0  +


Написал сортировку строк (на входе файл со строкой, задача отсортировать указатели и вывести по ним символы), а прога не хочет выводить отсортированную строку. Ошибка вроде с указателями, тока не могу понять где.
Код

#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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Посмотри сюда:
printf("%c\n",*(pa+i)); //вывод
, и подумай, что будет храниться в i после цикла, и что, собственно, ты хочешь распечатать?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Никита

Репутация: -  0  +


Цитата(volvo @ 16.04.2008 15:39) *

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


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

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


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

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


Сообщение отредактировано: Bo2nik -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Никита

Репутация: -  0  +


Цитата

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


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

fgets (line1,100,fp1);

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Ну, в принципе, вот это никаких лишних символов не выдает:
printf("%s\n",pa);
(если у тебя одна строка в файле, и нет символа перевода строки, потому что fgets забирает строку включая символ "\n")
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Никита

Репутация: -  0  +


Спасибо.

Сообщение отредактировано: Bo2nik -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.11.2020 14:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name