fread不会读取整个文件

时间:2018-08-06 11:57:25

标签: c ubuntu fread

我用fread读取了整个文件,但我只得到第一个文件,为什么?

我的代码:

#define MAXBUFLEN 4096

int main(){
int ret =0;
    char source[MAXBUFLEN + 1];
    FILE *fp = fopen("test", "r");

    if (fp != NULL) 
    {
        rewind(fp);
        ret = fread(source, 1, MAXBUFLEN, fp);
        printf("ret : %d %s",ret,source);
        fclose(fp);
    }
    return 0;

}

文件文本:

/# cat test
/usr/sbin/sshd-p 1234-o LoginGraceTime=30-o ClientAliveInterval=600-o ClientAliveCountMax=0-o TCPKeepAlive=no-o MaxSessions=1-o MaxStartups=1-o MaxAuthTries=3

我的程序输出:

ret : 167  /usr/sbin/sshd

读取整个文件的最简单方法是什么? (这不是标准的并且不以\ n结尾)?

1 个答案:

答案 0 :(得分:0)

答案:该文件中每个单词之间有0,这不是标准单词,而是^ @,在Linux中单独用^ @表示。该代码是通过以下方式修复的:

#include <stdio.h>

void removeNewLine(char * str,int len);

#define MAXBUFLEN 4096

int main(){
    char source[MAXBUFLEN + 1];
    FILE *fp = fopen("test", "r");
    int ret =0;
    if (fp != NULL) 
    {
        rewind(fp);
        ret = fread(source, 1,MAXBUFLEN, fp);
        removeNewLine(source,ret);
        fclose(fp);
    }
    return 0;
}

void removeNewLine(char * str,int len){
    int i=0;
    for(i=0; i<len;i++) {
        if((int)str[i]==0 )
        {
            str[i]=' ';
        }
    }
    str[len] = 0;
    printf("%s",str);
 }