如何在C中读取文件时忽略行尾?

时间:2017-02-10 20:19:43

标签: c fgetc

我是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++;
    }
}

注意:我试图添加"灰色(0x66)"字符为0时的位图颜色和"白色0xff"当一个角色不是零时。换句话说,我要区分0和任何其他角色,而且线条末端角色很难和令人不安。

1 个答案:

答案 0 :(得分: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++;
   }
}