gpt4 book ai didi

c - 以字节为单位读取文件中的可打印 ASCII 字符

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:56 24 4
gpt4 key购买 nike

我必须编写一个从命令行获取文件名的程序。然后它从文件中读取几个字节,寻找可打印字符的字符串(ASCII 值介于 32126 十进制之间)。然后打印出字符串。字符串是至少 4 个连续可打印字符的运行,并在遇到不可打印字符时结束。每当找到这样的字符串时,将其打印在新行上。

我目前拥有的是:

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

int main(int argc, char *argv[]){
FILE *fp;
fp = fopen(argv[1], "rb");
char buffer;

while(fp != NULL)
{
fread(&buffer, 1, 1, fp);
}

fclose(fp);
}

我认为这是从命令行获取程序并逐个读取文件的所有字节并将它们存储到 buffer 中。现在我需要检查数组的每一部分,看看每个元素是否在 32136 之间。如果是,我将这些字节添加到另一个数组,直到有一个字节不在此范围内。对整个 buffer 数组执行此操作。这是一种代码方法吗?到目前为止是否正确?

最佳答案

稍微改变一下 while 循环。您正在检查的是文件是否在循环中退出,该循环不会获取您想要的所需结果。

fp 与 NULL 比较以确定文件打开是否成功,因为如果打开文件则 fopen 返回文件地址或 NULL 表示出现问题。

if( fp == NULL )
{
perror("Error while opening the file\n");
exit(0);
}

你想要做的是以下几行:

while( ( ch = fgetc(fp) ) != EOF ) { // reads character by character from the file 
if((ch <32) || (ch>136)) // check if it is in range to printed
break;
else
printf("%c",ch); // format whoever you want
}

关于c - 以字节为单位读取文件中的可打印 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163871/

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