我有這樣的代碼在一個函數在C:strcat()在什麼情況下(如果曾經)掛起?
char* root = "/home/OS/homework/user/honorsupgrade/HTML";
requestInfo->resource = "/bing"
printf("1\n");
int counter = 0;
for(counter = 0; counter < 100; counter++)
{
if(root[counter] == '\0')
{
printf("True1\n");
break;
}
}
for(counter = 0; counter < 100; counter++)
{
if(requestInfo->resource[counter] == '\0')
{
printf("True2\n");
break;
}
}
printf("2\n");
fflush(stdout);
strcat(root, requestInfo->resource);
printf("3\n");
fflush(stdout);
return open(root, 0_RDONLY);
...
索取信息的東西,需要
struct ReqInfo
{
char *resource;
}
我在C創建了兩個字符串(字符指針) ,但由於某些原因,當我將這些方法傳遞給strcat()時,strcat()永遠不會返回。這會導致程序掛起。我已經測試過,以確保兩個字符串都有空終止符(所以strcat不是試圖連接超過它應該)。該程序將打印1和2,但從不打印3,這意味着它永遠不會通過strcat()調用,因爲我沖洗緩衝區以確保沒有問題。 \
編輯:我創建的代碼塊外的結構,我有一個char *資源更換時「requestInfo->資源」得到同樣的問題,並使其成爲「/冰」
您需要爲ReqInfo結構的'resources'字段分配內存,因此您需要爲char聲明的'root'變量編寫'char resource [MAXRESOURCE]'(或者用malloc進行分配)。 – stackptr