c语言如何传递字符串?
发布网友
发布时间:2022-04-26 15:27
我来回答
共4个回答
热心网友
时间:2022-05-04 18:56
c语言函数中传递字符串,可以分为两种情况,一种是将字符串作为参数,一种是将字符串作为返回值 ,当使用字符串作为返回值时,切记不要传递局部字符数组。下面是一个示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void f(char *str) { //字符串作参数
printf(str);
}
char * r() { //字符串作返回值
//使用动态分配内存,不要使用局部变量比如
//char buf[80]; 因为局部变量在函数结束时,栈区变量已被回收
char *str = (char *)malloc(256 * sizeof(char));
if (str==0) { printf("can't alloc mem\n"); return 0;}
else memset(str, 0x00 ,sizeof(char) * 256);
return str; //
}
int main()
{
char *pstr = r();
if (pstr!=0) strcpy(pstr, "hello world\n");
f(pstr);
free(pstr);
return 0;
}
热心网友
时间:2022-05-04 20:14
你还记不记得交换两个数的数值的函数change(),如果直接将要交换的数传给change,是起不到交换的目的的(被交换的是change中的两个数,main中的那两个没有被交换),需要使用指针。
同理,把结构体传到你的函数中,改变的是这个函数中的结构体,不是main中的,试试把函数改成接受结构体指针的形式
另一个问题不会,呵呵,不好意思
热心网友
时间:2022-05-04 21:49
可以带入一个指针参数,这样就不用返回值了。这样:
read_one_string(char *t)
{
char s[100];
gets(s);
t = s;
}
热心网友
时间:2022-05-04 23:40
char * read_one_string()
{
char *s =(char *)malloc (sizeof(char)*100);//开辟空间
gets(s);
return s;
}