簡體   English   中英

在C中讀取文件時如何忽略行尾?

[英]How to ignore end of line while reading file in C?

我是C編程的新手,請耐心等待,如果使用錯誤的方法,請糾正我。

在C中逐個字符讀取文件時遇到問題。

如下所示,顯然我的文件有400個字符,但是當我嘗試逐個字符讀取它們時,它們最多占用419個索引。 我猜他們也包括換行符。 我不知道如何忽略它們。 如您所見,我嘗試使用“ continue ,但我無法忽略它們。

這是我的文件數據

00000000000000000000
00000000000000000000
00000000000000000000
00555555555555555500
00000000000000000300
00000000000000000300
00000000000000000300
00000000000000000300
00000000000000000300
00000000000000000300
00444444444444444300
00400000000000000000
00400000000000000000
00400000000000000000
00400000000000000000
00400000000000000000
00777777777777777700
00000000000000000000
00000000000000000000
00000000000000000000

這是我的代碼:

FILE *pToFile = fopen("toConvert.txt", "r"); 

char single;
i = end_color; 
while ((single = fgetc(pToFile)) != EOF) {

    if (single != '\0') {   
        continue;
    } else {
        if (single !='0') {
            bitmap[i] = 0x66;  
        } else {
            bitmap[i] = 0xff;
        }
        i++;
    }
}

注意:我試圖在字符為0時在位圖中添加“灰色(0x66)”顏色,而當字符為非零時在“白色0xff”中添加顏色。 換句話說,我必須區分0和任何其他字符,這很難並且會影響行尾字符。

文件中的換行符為'\\ n',而'\\ 0'表示數組的空字符。 因此,用前者替換后者,並將'!='替換為'=='以跳過換行符的讀入。

FILE *pToFile = fopen("toConvert.txt","r"); 
// single as int (thanks to Weather Vane comment) 
int single;
int i = end_color; 
while((single = fgetc(pToFile)) != EOF){

    if(single == '\n' ){ 
        continue;
    }else{
        if(single !='0'){
            bitmap[i] = 0x66;  
        }
        else{
            bitmap[i] = 0xff;
        }
        i++;
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM