c - 如何从 C 中的 char 函数返回字符串

标签 c function sorting char

我正在编写这个冒泡排序练习,并且必须创建 2 个源文件。第一个包含主要代码,第二个包含我的冒泡排序算法。主要代码包括冒泡排序。

主要:

#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 经验称为字符串),但我只是无法尽我所能找到一种方法来做到这一点。

一个解决方案会很棒,或者只是一个小小的帮助,我们将不胜感激。

编辑:我忘了提及我的程序实际上是做什么的。它应该从用户那里获取一个字符串,应用冒泡排序算法,该算法将按字母顺序对字符串中的每个字符进行排序,即“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;
 }

关于c - 如何从 C 中的 char 函数返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28953250/

相关文章:

c - 如何以 char 的十六进制值获取二进制表示

c - 返回除数之和的函数,不带余数,C

r - 无需任何手册和信息即可知道包中可用的函数和数据集(黑盒)R

mySQL:物理排序

Python:如何根据另一个列表对列表进行排序

c - 我不明白这个程序是做什么的,它是一个递归程序

c - 如果多个线程并行处理,如何维护数据包的顺序?

c - out[i] = *(a_mat + i) 在 C 中做什么?

python - 如何对列表中元素的所有实例进行索引、删除和计数?

jquery - 使用 jQuery 对表列进行拖放排序