返回字符串时遇到一个奇怪的问题。 它说不能将int转换为const char *
#include<stdio.h>
#include<conio.h>
#include <string.h>
/*The above program shows that you can not return a string from a function normally*/
char check(char str[]);
void main(void)
{
char str[30],str2[30];
printf("Enter a sentence:");
gets(str);
strcpy(str2,check(str));
getch();
}
char check(char str[30])
{
return str;
}
答案 0 :(得分:6)
您必须返回char *而不是
答案 1 :(得分:4)
不,字符串不是C中的内在数据类型。请参阅http://c-faq.com/aryptr/index.html
此外,如果您不想在代码中构建错误,请忘记gets()
存在并使用fgets()
。 http://c-faq.com/stdio/getsvsfgets.html
答案 2 :(得分:3)
C编程语言没有数据类型“string”。 C支持char数组和指向char的指针。
您可以使用指针来解决char数组:
char *p;
char str[30];
p = str;
您的函数必须返回指向字符的指针。将代码更改为
char* check(char str[30])
{
return str;
}
会奏效。您必须记住,您返回已传递给函数的参数的地址。
如果要填充函数中的任何结果变量,请将地址传递给函数:
int check(char* result, char str[]);
void main(void)
{
char str[30], str2[30];
printf("Enter a sentence:");
gets(str);
if (check(str2, str))
{
printf("check succeeded %s\n", str2);
}
getch();
}
int check(char* result, char str[30])
{
int success;
success = ....;
if (success)
{
strcpy(result, str);
}
return v;
}
答案 3 :(得分:2)
在检查功能的返回类型中是否缺少“*”?
应该是
char*
而不是
char
答案 4 :(得分:1)
不,你需要这样做:
#include<stdio.h>
#include<conio.h>
#include <string.h>
/*The above program shows that you can not return a string from a function normally*/
char check(char str[]);
void main(void)
{
char str[30],str2[30];
printf("Enter a sentence:");
gets(str);
strcpy(str2,check(str));
getch();
}
char *check(char str[30])
{
return str;
}
您还可以修改函数中的字符串而不返回它,前提是您不要尝试重新分配其大小,例如:
#include<stdio.h>
#include<conio.h>
#include <string.h>
/*The above program shows that you can not return a string from a function normally*/
void check(char *str);
void main(void)
{
char str2[30];
char *str;
str = malloc(30);
printf("Enter a sentence:");
gets(str);
check(str);
strcpy(str2,str);
getch();
}
void check(char *str)
{
strcpy(str, "test");
}
答案 5 :(得分:1)
编译:
#include<stdio.h>
#include <string.h>
/*The above program shows that you can not return a string from a function normally*/
char *check(char **str);
int main(void)
{
char str[30],str2[30];
char *p;
p=str;
printf("Enter a sentence:");
fgets(str, sizeof str, stdin);
strcpy(str2,check(&p));
printf("You said: %s\n", str2);
return 0;
}
char *check(char **str)
{
return *str;
}