我試圖解析任意索引周圍的字符串。在我最簡單的測試程序中,我可以想出我有一個輸入字符串,我將輸入讀入,然後執行memcpy來解析字符串。將char *解析爲令牌時出現Segfault
爲了測試這個,我輸入「this text」作爲輸入。 readInput是一個函數,我只需要調用getline(&輸入,&大小,stinstin)並返回輸入指針。
int main(){
char *input;
input = readInput();
int parseAround = 4;
char *token1;
char *token2;
memcpy(token1, inputBuffer, 4);
printf("token: %s\n", token1); //prints "this"
memcpy(token1, inputBuffer + (parseAround+1), 4);
//when changed to memcpy(token2,...); segfaults
printf("token: %s\n", token1); //prints "text"
free(input);
return 0;
}
但是,當我更改第二個memcpy使用token2而不是令牌1時,出現分段錯誤。爲什麼是這樣?
無論'token1'黑色'token2'初始化......它們指向隨機的地方。因此,當你對它們進行「memcpy」時,你正在複製到一個隨機位置,並且你錯誤地斷開了。 – NickStoughton
'memcpy(token1,inputBuffer,4);'沒有分配給'token'的內存。 –