我在C中遇到了strca
t的奇怪问题。这是代码:
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
在结尾处返回一些随机字符。什么应该回来。
答案 0 :(得分:3)
您的代码中存在许多问题:
if (calendar[month] && calendar[month][day]) {
document.write(calendar[month][day]);
} else {
document.write("This is not a holiday");
}
中将x
定义为getip
,它应为char *x[255]
char x[255]
或使用x
之前初始化strcat
。strcpy
指向本地数组ip
,将其返回给调用者会调用未定义的行为,因为它指向的数组在函数返回后无法使用。x
adrr()
未在n
main
中定义
第一个函数似乎按预期工作,纯粹的运气,在不同的系统上编译时可能会失败,甚至只是在不同的一天; - )
这是一个解决方案:
scanf("%s",&n);
答案 1 :(得分:0)