2015-03-09 2 views
0

Я пишу это упражнение с сортировкой пузыря, и мне нужно создать 2 исходных файла. Первый содержит основной код, а второй содержит мой алгоритм сортировки пузырьков. Основной код включает в себя bubblesort.Как вернуть строку из функции char в C

Главная:

#include<stdio.h> 
#include<string.h> 
#include"2.c" 
int main(void) 
{ 
    char text[100]; 
    int length; 
    printf("Insert text: \n"); 
    gets(text); 
    text=bsort(text); 
    printf("String : %s \n",text); 
    return 0; 
} 

BubbleSort:

char *bsort(char text[100]){ 
    char temp[100]; 
    int length,i,j; 
    length=strlen(text); 
    for(i=1;i<length;i++){ 
      for(j=0;j<length-i;j++){ 
       if(text[j]>text[j+1]){ 
         temp[0]=text_input[j];  // 
         text_input[j]=text_input[j+1];//Edit,had wrong code posted 
         text_input[j+1] =temp[0];  // 
       } 
      } 
     } 
    return text;} 

Дело в том, когда я запускаю его, я получаю "несовместимые типы при назначении типа 'символ [100]' от типа ' char * '"

Я ужасно новичок в c, и я немного потерян, я просматриваю ответ уже довольно много часов. Я понимаю, что функция вернет char вместо массива char (известный как строка из java-опыта), но я просто не могу найти способ сделать это так сильно, как я пытаюсь.

Решение будет отличным, или только небольшая помощь будет оценена по достоинству.

Большое спасибо

EDIT: Я забыл упомянуть, что на самом деле моя программа. Предполагается, что вы получите строку от пользователя, примените алгоритм bubblesort, который будет сортировать каждый cahracter в строке в алфавитном порядке, то есть «bagf» будет выводиться как «abfg». Также добавлены некоторые комментарии

+0

Почему вы пишете код, как это? вы программист javascript? и 'temp [0], текст [j]' абсолютно ничего не делает. –

+0

Попробуйте 'char temp; ... temp = text [j]; текст [j] = текст [j + 1]; text [j + 1] = temp; ' – chux

+1

@iharob: Что такое Javascript, как о коде? –

ответ

1

Прежде, пожалуйста, напишите свой код таким образом, что это читаемое, ваша проблема в том, что вы не обменивать любые значения

char *bsort(char text[100]) 
{ 
    char temp[100]; 
    int length, i, j; 

    length = strlen(text); 
    for(i = 1 ; i < length ; i++) 
    { 
     for (j = 0 ; j < length - i ; j++) 
     { 
      if(text[j] > text[j + 1]) 
      { 
       temp[0]  = text[j]; 
       text[j]  = text[j+1]; 
       text[j + 1] = temp[0]; 
      } 
     } 
    } 
    return text; 
} 
+0

И вам не нужно, чтобы tem был массивом вообще. Только одна переменная char –

+0

Также замените эту строку: 'text = bsort (text);' только с 'bsort (text);'. 'bsort' сортирует массив символов на месте. Ваша реализация bubblesort совершенно неэффективна. – chqrlie

Смежные вопросы