[英]Problems with strcat
我在C strca
有一個奇怪的問題。這是代碼:
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
在它應該返回的內容的開頭和結尾返回一些隨機字符。
您的代碼中存在許多問題:
x
在getip
作為char *x[255]
它應該是char x[255]
strcat
之前初始化x
或使用strcpy
。 ip
指向本地數組x
,將其返回給調用者會調用未定義的行為,因為它指向的數組在函數返回后無法使用。 adrr()
相同問題 main
沒有為scanf("%s",&n);
定義n
scanf("%s",&n);
第一個函數看起來像純粹的運氣一樣工作,它可能在不同的系統上編譯時失敗,甚至只是在不同的日子;-)
這是一個解決方案:
#include <stdio.h>
char *getip(char *dest, const char *src) {
for (i = 0; src[i] != '\0' && src[i] != '/'; i++) {
dest[i] = src[i];
}
dest[i] = '\0';
return dest;
}
int main(void) {
char n[256];
char ip[256];
if (scanf("%255s", n) == 1) {
printf("IP: %s\n", getip(ip, n));
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.