2015-03-25 71 views
1

我使用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:从来不使用记事本

+0

你在Windows上吗?你是如何创建输入文件的? – immibis 2015-03-25 03:32:24

+0

是的,用VS2013 dev cmd编译/运行。我刚打开记事本并手动创建输入文件 – cp101020304 2015-03-25 03:33:07

+0

,LMAX定义为什么? – JohnH 2015-03-25 03:40:04

回答

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内在的东西造成的。或者您的输入文件可能存在问题。

0

尝试龟etc()或使用FREAD()在我的系统上的时间