【发布时间】:2016-10-29 16:29:13
【问题描述】:
我对 C 语言中的 strcat 有一个奇怪的问题。代码如下:
char *getip(char n[])
{
char *x[255];
strcat(x, n);
char *ip;
ip = strtok(x, "/");
return ip;
}
char *adrr(char n[])
{
char *ip[255];
strcat(ip, getip(n));
return ip;
}
int main(void)
{
scanf("%s", &n);
printf("IP : %s\n", getip(n));
printf("IP : %s", adrr(n));
}
第一个 printf 返回的正是我希望它返回的内容,虽然函数 adrr 似乎什么也没做,第二个 printf 在它应该返回的内容的开头和结尾返回一些随机字符。
【问题讨论】:
-
char *ip[255]应该是char ip[255]否则它是一个指针数组。好吧,不是字符串。这行不通,因为您要返回对临时对象的引用 -
首先,将
char *x[255]更改为char x[255]。 -
..并对其进行初始化,以便
strcat和char x[255] = {0};可以使用它 -
或直接使用
strcpy