我在逐字逐句地读,下面是我采用的逻辑。这是在单词fine中读取,除非它到达一行中的最后一个单词,其中存储当前文件的最后一个单词和下一个新行的第一个单词。有人能告诉我怎么才能让它工作吗?

int c;
int i =0;
char line[1000]
do{
    c = fgetc(fp);

    if( c != ' '){
        printf("%c", c);
    line[i++] = c;

    }else if((c == '\n')){

//this is where It should do nothing

    }else{
    line[i] = '\0';
    printf("\\0 reached\n");//meaning end of one word has been reached
    strcpy(wordArr[counter++].word, line);//copy that word that's in line[xxx] to the struct's .word Char array
    i=0;//reset the line's counter

    }//if loop end



} while(c != EOF);//do-while end

fp是一个文件指针。
HI BABY TYPE MAYBE
TODAY HELLO CAR
HELLO ZEBRA LION DON
TYPE BABY

我得到(没有报价)
"HI"
"BABY"
"TYPE"
"MAYBE
TODAY"

最佳答案

看看这个:

if(c != ' ') {
    // ...
} else if(c == '\n') {
    // WILL NEVER BE REACHED
}

如果c == '\n',则c != ' '也是真的,这意味着第二个块将被跳过,第一个块将为所有'\n'字符运行(即,它们将被打印)。
关于行尾的其他答案是错误的。CFILE *s未以二进制模式打开将为您处理下线。如果您有一个DOS文件,并且在Unix上阅读它,可能会产生问题,但我怀疑这是您的问题所在,如果它正在处理它,可能会比这里显示的答案复杂一些。但是当你到达那座桥的时候你可以跨过它。

关于c - 实现fgetc;试图逐字阅读,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8865614/

10-11 16:37