2 回答

TA貢獻(xiàn)2036條經(jīng)驗 獲得超8個贊
首先要聲明,strlen(xx[i])反回的值是0,因為你的xx還沒有初值。你應(yīng)該在readDat()的while循環(huán)中測試一下,是否讀入了數(shù)據(jù)到xx數(shù)組中,在while中使用printf輸出xx數(shù)組就知道了。應(yīng)該是strlen反回0導(dǎo)至的錯誤。因為不了解你的那個dat文件中9近是什么內(nèi)容,因此不好判斷
程序主要錯在第一個for語句for(j=1;j<(strlen(xx[i])-2);j=j+2)中的(strlen(xx[i])-2)這一句。
因為strlen()函數(shù)的反回類型為unsigned
int(無符號整型),因此再進(jìn)行strlen(xx[i]-2的時候得到的是一個負(fù)數(shù)-2,而unsigned
int是無法表示負(fù)數(shù)的,因此就被計算機(jī)轉(zhuǎn)換為補(bǔ)碼的形式來表示-2了,,也就是十進(jìn)制數(shù)的4294967292,二進(jìn)制形式是11111111110(具體多少個1自已算,反正前面全是1)
你可以把strlen(xx[i])強(qiáng)制轉(zhuǎn)換為int型來測試,比如(int)strlen(xx[i]-2這樣的話就能得到正確結(jié)果了。
添加回答
舉報