读书人

指向函数指针,该怎么处理

发布时间: 2012-09-28 00:03:35 作者: rapoo

指向函数指针
#include <stdio.h>
#include<string.h>

char *func()
{
char array[10];
return array;
}

int main(void)
{
char *str;
str = func();
strcpy(str,"Hello");
printf("%s",str);
return 0;
}
问:怎么使得输出hello

[解决办法]
不要再函数中返回局部字符串

要想输出hello
char str[10];
strncpy(str, "Hello", strlen("hello"));

[解决办法]
#include <stdio.h>
#include<string.h>

char *func()
{
char *array = malloc(20);//char array[10];是局部变量是不能够返回的。
if(array == NULL)
{
fprintf(stderr, "malloc failed!\n");
exit(1);
}
memset(array, 0, 20);
return array;
}

int main(void)
{
char *str;
str = func();
strcpy(str,"Hello");
printf("%s",str);
free(str);
return 0;
}
这是修改之后的代码,参考一下吧。
[解决办法]

C/C++ code
#include <stdio.h>#include <string.h>#include <stdlib.h>char* func(void){    return (char*)malloc(10 * sizeof(char));}int main(int argc, char* argv[]){    char* str = func();    strcpy(str, "Hello");    printf("%s\n", str);    free(str);    return 0;}
[解决办法]
C/C++ code
static char array[10]; 

读书人网 >C语言

热点推荐