0
print
語句按預期執行,如果在if
語句中打印line[0]
,則它也按預期打印。但是,gdb
告訴我,在if
聲明中發生了segfault
。我誤解了如何訪問string
中的字符?將索引解除引用指針分配給c中的字符串時出現Segfault錯誤
編輯的代碼卸下IRRELEVANT錯誤
void setflags(char** linep)
{
char* line = *linep;
while(strlen(line))
{
printf("%s\n",line);
if (line[0] == '.')
line[0] = '*';
else if (line[0] == ' ')
(*linep) ++;
else
break;
line = *linep;
}
}
你忘了,包括導致問題的一些示例輸入。 –
'while(strlen(line))'基本上是一個無限循環。而且你沒有向我們展示'linep'是如何初始化的。你可以寫入未分配的內存。 –
@ Jean-FrançoisFabre打破幾乎總是會發生,而不是strlen返回0,如果給一個指向包含'\ 0'的位置的指針? – user3504732