gpt4 book ai didi

c - 从文件中逐行读取

转载 作者:行者123 更新时间:2023-11-30 21:25:42 26 4
gpt4 key购买 nike

我试图从文件中逐行读取,但总是得到奇怪的打印结果。我收到很多看起来像正方形的打印件,分成 4 个小正方形,其中有 0。

这是我的代码:
(我只读了3行)
(如果我不写 if(...) 中断;它会按原样打印文件并且不会打印奇怪的符号)

while(i<3)    
{
while(read(fdin,buff,1)>0 )
{
if (strcmp(buff,"\n")==0)
break;
strcat(ch,buff);
}
printf("%s\n","********");
printf("%s\n",ch);
memset(ch,NULL,100);
i++;
}

我读取的文件:(我读取路径)

/home/user/Desktop/dir1
/home/user/Desktop/dir2
/home/user/Desktop/dir3

最佳答案

由于您一次只读取一个字符(这不是很有效,因为每个 read 都是一个系统调用),请尝试使用此代码,它不使用任何 C 字符串操作,只是动态检查角色并在其运行过程中构建结果线。

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>

char s[100], * p = s, * e = s + 100;

for (;;)
{
if (p == e)
{
/* overflow */
fprintf(stderr, "Input line too long.\n";)
abort();
}

errno = 0
n = read(fdin, p, 1);

if (n == 0 || *p == '\n')
{
*p = '\0';
printf("Line: '%s'\n", s);

// or: fwrite(s, 1, p - s, stdout)

if (n == 0)
{
/* end of file */
break;
}
else
{
/* reset, next line */
p = s;
}
}
else if (n < 0)
{
printf("Error: %s\n", strerror(errno));
abort();
}
else
{
++p;
}
}

关于c - 从文件中逐行读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27583070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com