啓用鑄當我編譯此代碼:賦值時將整數指針沒有默認
void rep_and_print(char * str, char * patt, int l, int i)
{
char * pch; // pointer to occurence
char * s;
s = str; // save original pointer
if (i == 0)
{
while ((pch = strstr(str,patt)) != NULL)
{
// FOUND
memset (pch,'*',l); // Set asterisk
str = pch + l; // move pointer to the end of asterisks to found new occurences
}
}
else
{
while ((pch = strcasestr(str,patt)) != NULL)
{
// FOUND
memset (pch,'*',l); // Set asterisk
str = pch + l; // move pointer to the end of asterisks to found new occurences
}
}
printf ("%s",s);
}
我得到這個錯誤:
warning: assignment makes pointer from integer without a cast [enabled by default]
while ((pch = strcasestr(str,patt)) != NULL)
,並有一個箭頭指向等號pch
和strcasestr
當你使用'-Wall'編譯時,你還會收到警告嗎? 'strcasestr'不是一個標準函數,在''中可能沒有定義,所以你的編譯器假定它返回一個'int'。這將解釋爲什麼對於'strstr'的相同代碼,它不是一個錯誤。 –