2012-12-07 28 views
0

我有內存分配給一個文件,以便能夠從輸入文件中讀取。檢查我的內存的特定字符 - 不能這樣做

((mem = (unsigned char *) malloc (filesize)) == NULL) 

我有它從內存(技術上來說)讀取。該循環將讀取內存的內容,並將每個字符寫入另一個輸出文件,直到達到預設限制,然後它將繼續寫入下一行(每行默認爲40)。我有它正確的讀寫,以及在每行40包裝,但輸入文件有多行不同長度,寫入新文件是包括「\ n」(新行),從而使多個行長度但不大於40.我需要檢查何時出現「\ n」並跳過它。

這是我的問題,我不知道如何檢查我是否碰到「\ n」。

這裏是我的傷心嘗試(循環的一部分):

fread(mem, 1,filesize, inf); 
for(i=0; i < filesize; i++) 
{ 
*temp = mem[i]; 
    if (!strcmp(temp,"\n")); 
     { 
      i++; 
     } 
+2

[不要在C中拋出malloc的返回值](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) –

+0

使用'temp '或'strcmp'在這裏。只要'如果(mem [i]!='\ n'){/ *做東西* /}'應該就夠了。 – netcoder

+0

不需要使用'strcmp'(這是用於字符串比較的,不會像這裏編碼那樣工作)。相反,只需測試單個字符:if(mem [i] =='\ n')'。 –

回答

1

mem是人物的動態數組,所以只檢查有問題的性質:

for(i=0; i < filesize; i++) 
{ 
    if (mem[i] != '\n') 
    { 
     // do stuff 
    } 
    //else it's a newline, don't do anything and we'll skip it when i increments next 
} 

你有沒有請注意您在if聲明後有一個;

+0

額外的分號必須是它! :))) – YePhIcK

相關問題