我用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结尾)?
答案 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);
}