如何 return 来自 C 中 char 函数的字符串
How to return a string from a char function in C
我正在编写这个冒泡排序练习,我必须创建 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 的新手,有点迷路了,我已经花了好几个小时浏览答案。我知道该函数将 return 一个 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;
}
我正在编写这个冒泡排序练习,我必须创建 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 的新手,有点迷路了,我已经花了好几个小时浏览答案。我知道该函数将 return 一个 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;
}