strcat的问题

时间:2016-10-29 16:29:14

标签: c string c-strings strcat

我在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在结尾处返回一些随机字符。什么应该回来。

2 个答案:

答案 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
  • 中的相同问题 {li> adrr()未在n main 中定义

第一个函数似乎按预期工作,纯粹的运气,在不同的系统上编译时可能会失败,甚至只是在不同的一天; - )

这是一个解决方案:

scanf("%s",&n);

答案 1 :(得分:0)

  1. n in main不存在
  2. 我想你考虑char buf [10]但是写char * buf [10]
  3. 如果返回指向仅存在于函数内部的内存的指针,则结果未定义。使它静止或动态。