当我不想要它时,fgets拆分输入字符串

时间:2015-03-25 03:31:01

标签: c visual-studio-2013 fgets

我使用fgets从文件中读取一行,但它将输入行分成多行,这不是我想要它做的。

这是我正在使用的代码:

    char string[LMAX];
FILE *fp;
fp = fopen("input.txt","r");


while(fgets (string, LMAX, fp) != NULL) {    //Reading the file, line by line
    printf("%s", string);  
}

例如,如果我的输入文件有1,2;0,5;7,8;0,6;;,则控制台中的输出会将其分解为0。

1,2; 0,5;7,8; 0,6;;

我希望它能用一行打印

编辑:确实这是我输入文件的问题。

tldr:永远不要使用记事本

2 个答案:

答案 0 :(得分:0)

尝试fgetc()或使用fread()一次读取一个字节

答案 1 :(得分:0)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
    int LMAX = 1024;
    char foo[LMAX];
    FILE *fp;
    fp = fopen("input.txt","r");
    while(fgets (foo, LMAX, fp) != NULL) {    
    //Reading the file, line by line
        printf("%s", foo);
    }
}   

我的系统上的一切正常(虽然我正在运行osx)。

1,2;0,5;7,8;0,6;;

明智地编码,你的逻辑和修饰符是合理的。我预计输出中的错误是由于Visual Studio中固有的东西。或者输入文件可能存在问题。