急!请教达人修改程序,在线等!

来源:百度知道 编辑:UC知道 时间:2024/06/23 04:59:01
char *string_test()
{
char *a="1234567890";
char c[10];
int *b;
b=malloc(sizeof(a));
strcpy(b,a);
strncpy(&c,a,10);
printf("%s\n",c);
return b;
}
main()
{
char *b=string_test();
printf("%s\n",b);
return;
}

修改如下:
#include <string.h>

char *string_test() {
char *a="1234567890";
char c[11];// 11个字符,最后一个用于结束
char *b; // 声明为char会好一些,然后下一行强制类型转换。
b = (char *)malloc(sizeof(a));
b = strcpy(b, a);
strncpy(&c[0], a, 10);// 取数组第一个元素的地址,而不是c,对于某些检查严格的编译器来说,可以避免运行检查报错。而且数组和指针之间还是有细微差别。
c[10] = '\0';//字符串结束标志
printf("%s\n", c);
return b;
}

main() {
char *b = string_test();
printf("%s\n",b);
getch();
return;
}

char *string_test()
{
char *a="1234567890";
char c[10]; 改为char c[11];
int *b; /*程序中没有输出b,b也不参加任何计算,不知有何用?*/
b=malloc(sizeof(a));
strcpy(b,a);
strncpy(&c,a,10);
===>这里加一行:c[10]=0;/*字符串结束符*/
printf("%s\n",c);
return b;
}
main()
{
char *b=string_test();
printf("%s\n",b);
return;
}