簡體   English   中英

如何從C中的char函數返回字符串

[英]How to return a string from a char function in C

我正在編寫氣泡排序練習,我必須創建2個源文件。 第一個包含主要代碼,第二個包含我的冒泡排序算法。 主要代碼包括Bubblesort。

主要:

#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;
}

冒泡:

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;}

問題是,當我運行它時,我從類型'char *'分配給類型'char [100]'時得到了一個不兼容的類型”錯誤

我是c的新手,我有點迷路了,我已經在尋找答案了好幾個小時。 我知道該函數將返回一個char而不是char數組(從Java經驗中被稱為字符串),但是我只是無法找到一種盡力而為的方法。

一個解決方案將是巨大的,或者只有一點點幫助將不勝感激。

編輯:我忘了提到我的程序實際上在做什么。 應該從用戶那里得到一個字符串,應用Bubblesort算法,該算法將按字母順序對字符串中的每個字符進行排序,即“ bagf”將作為“ abfg”輸出。 還添加了一些評論

首先,請以可讀的方式編寫代碼,問題是您沒有交換任何值

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;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM