[英]Seg Fault while strcpy
這是我正在處理的相關代碼。 我沒有問題地標記了來自stdin的輸入,當我復制該輸入時,我遇到了段錯誤。 但是,我沒有“ strcpy(s,input)”出現段錯誤。 我在這里缺少基本的東西嗎? 謝謝
char *s = malloc(64 * sizeof(char));
char *token = malloc(64 * sizeof(char));
char *currstring = malloc(128 * sizeof(char));
currstring = NULL;
fgets(input,100, stdin);
strcpy(s, input);
token = strtok(s,delim);
while (token)
{
//Condition checking
strcpy(currstring,token);
}
char *currstring = malloc(128 * sizeof(char));
currstring = NULL;
您分配了內存,但隨后立即將其丟棄,並將指針設置為NULL。 擺脫第二行。
如果您嘗試將其設置為空字符串( ""
),請執行以下操作:
currstring[0] = '\0';
// or
strcpy(currstring, "");
不過,這可能不是必需的。 如果以后要執行strcpy()
則無需將字符串設置為""
。
char *token = malloc(64 * sizeof(char));
您也不需要為token
分配內存。 strtok()
將導致token
指向s
內s
某個位置,因此為token
分配內存只會在您執行token = strtok(s, delim);
泄漏內存token = strtok(s, delim);
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.