簡體   English   中英

strcpy時出現段故障

[英]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指向ss某個位置,因此為token分配內存只會在您執行token = strtok(s, delim);泄漏內存token = strtok(s, delim);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM