gpt4 book ai didi

c - 将文件内容或字符串拆分为相同大小的字符串数组

转载 作者:行者123 更新时间:2023-11-30 15:23:28 26 4
gpt4 key购买 nike

我需要有关 C 编程的建议。我需要将文件(或其内容)拆分为字符数组。我在互联网上发现了不同的解决方案,可以将文件拆分为不同的较小文件,或者将字符串拆分为数组,但使用带有 strtok() 的分隔符

事情是:我需要将其拆分并将其存储到一个 char 数组中,但每个元素必须具有相同的大小(64 位)

你们知道我该怎么做吗(使用标准 C 库)?任何建议将不胜感激。

为了更清楚:我设法将一个文件拆分为多个相同大小的较小文件示例:

Zeddis@localhost $> ls -la
-rw-rw-r--. 1 Zeddis Zeddis 64 28 févr. 23:17 filepart_number_10
-rw-rw-r--. 1 Zeddis Zeddis 64 28 févr. 23:17 filepart_number_11
-rw-rw-r--. 1 Zeddis Zeddis 64 28 févr. 23:17 filepart_number_12
[...]

但我需要将内容存储到数组中,而不是文件中,并且每个元素的大小必须为 64。

假设我有一个 2mb 的 .txt 文件,我需要将其内容存储到一个数组,其中元素的大小为 64 位。

test.txt content : qwertyuiopasdfgh"

a[0] = "qwer"
a[1] = "tyui"
a[2] = "opas"
a[3] = "dfgh"

[...]

注意:我使用 char 作为示例,但它可以是 int 或任何其他值,我只需要每个元素具有相同的大小。我希望你理解,因为英语不是我的母语。

最佳答案

考虑以下示例,也许它会很有用:

#include <stdio.h>
#include <string.h>
#include <stdint.h>

int main(int argc, char * argv[])
{
FILE * f;
int64_t buffer;
// check that file name is given and file is available
if(argc == 2)
{
f = fopen(argv[1], "rb");
if( f == NULL )
{
printf("File %s cannot be read!\n", argv[1]);
return 1;
}
}
else
{
printf("File name needed!\n");
return 1;
}
// reading from file to buffer in the loop
while( !feof(f) )
{
if( 1 == fread(&buffer, sizeof(buffer), 1, f) )
{
// do something with buffer (e.g. copy value to array)
// ...
}
}
// ...
fclose(f);
}

编辑:

对于 char[8](64 位)数组作为缓冲区的情况:

#include <stdio.h>
#include <string.h>
#include <stdint.h>

int main(int argc, char * argv[])
{
FILE * f;
char charbuf[8];
int cnt;
// check that file name is given and file is available
if(argc == 2)
{
f = fopen(argv[1], "rb");
if( f == NULL )
{
printf("File %s cannot be read!\n", argv[1]);
return 1;
}
}
else
{
printf("File name needed!\n");
return 1;
}
// reading from file to buffer in the loop
while( !feof(f) )
{
if( 8 == fread(charbuf, sizeof(char), 8, f) ) // only if 8 bytes was read
{
// do something with buffer
// e.g. output all chars
for(cnt = 0; cnt < 8; cnt++)
putchar(charbuf[cnt]);
putchar('\n');
}
}
// ...
fclose(f);
}

关于c - 将文件内容或字符串拆分为相同大小的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787684/

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