gpt4 book ai didi

c - 如何让 fgetc 在循环内打印文件的所有字符

转载 作者:太空狗 更新时间:2023-10-29 15:56:01 25 4
gpt4 key购买 nike

我在玩 fgetc,想知道如何让我的循环打印一次行部分,然后打印前 16 个字符。

这是我的代码:

int main(int argc, char * argv[])
{
FILE *fp;

if((fp = fopen(argv[1], "rb+")) == '\0')
{
perror("fopen");
return 0;
}

getchar(fp);

return 0;
}

void getchar(FILE *fp)
{
int c;
size_t linecount = 0;

while((c = fgetc(fp)) != EOF)
{
printf("line : ");
printf("%c ", c);
linecount++;

if(linecount == 16)
{
printf("\n");
}
}
}

我希望我的输出是这样的:

 line: ? 5 d s d a d 0 0 0 0 0 0 0 0 0 0 0
line: a d s x c v d 0 0 0 0 0 0 0 0

我试过使用这个 for 循环打印字符:

for(i = 0; i < 16; i++)
{
printf("%c ", c);
}

但是那并没有得到其他字符,因为循环仍然集中在第一个字符上

最佳答案

首先,已经有一个标准函数叫做getchar()<stdio.h> 中定义- 你必须改变你的函数的名字,否则你可能会得到一些非常奇怪的行为。

其次,在我看来,你想要做的是:

  • 打印出"line: " ;
  • 读取一个字符并打印,直到文件结束或者你已经打印了16个字符;
  • 打印出"\n" .

这将转化为代码形式:

printf("line : ");

while (linecount < 16 && (c = fgetc(fp)) != EOF)
{
printf("%c ", c);
linecount++;
}

printf("\n");

关于c - 如何让 fgetc 在循环内打印文件的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6618598/

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