c - 一次拆分一个字符串 8 个字符

标签 c

我正在尝试划分一个缓冲区,一次划分为 8 个字符。

我的缓冲区运行正常,我唯一不知道的是如何执行此操作。

我现在拥有的是:

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

void splittingFunction(FILE *filePtr, long fileLength)
{
    char *buffer=(char*)malloc(fileLength+1);
    if(!buffer)
        printf("Out of Memory");
    n=fread(buffer, fileLength, 1, filePtr);

    for(i=0; i<fileLength; i++)
        printf("%c",buffer[i]);

    free(buffer);
}

所以这会将我打印到屏幕上,如下所示:

10111010001101000001000000111010001101000011001010010000001100001011100100110110101111001001000000110111101100110001000000111010001101000011001010010000001100100011001010110000101100100001011100000110100001010010101000110100001100101001000000100111001101001011001110110100001110100001000000100101101101001011011100110011

我想做的是:

arr[]={"10111010","00011010","00000100", ...}

我知道这听起来很傻,但我就是想不通。任何帮助将不胜感激

最佳答案

  1. 计算数组 arrSize 的长度(缓冲区长度除以 8,如果余数不为零则加 1)

  2. 创建一个可变长度的 char[9] 数组,其大小在步骤 1 中计算,即 char arr[arrSize][9]

  3. 使用 for 循环从 0 到 arrSize(不包含)。使用 i * 8 计算缓冲区中的位置,并复制 8 个字节(如果它不是最后一个字符串)或更少(如果它是最后一个字符串)。您可以使用 strncpy 或(如果您的平台有)strlcpy(稍微安全一些)来执行此操作。如果您不使用 strlcpy,请确保将空终止符放在末尾。另外,确保不要通过向其中写入超过 9 个字符而溢出缓冲区(strncpystrlcpy 不应发生这种情况,但如果您执行其他操作,请当心为此)。

关于c - 一次拆分一个字符串 8 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48081986/

相关文章:

c - 反转指向数组的指针

C - 巨大数组 - 段错误(核心转储)

c++ - Linux 在独立于 Windows 管理器的屏幕上绘图

python - 如何使 C 枚举类型可用于其他语言?

c - 哪里有上下文切换的例子

c - 这是一个普通的 Bug 还是一个聪明的预编译器 Trick?

.net - Linux 用户应该使用什么 IDE/编译器组合来在 Windows 上构建 Qt 应用程序,同时避免使用 MS Visual Studio?

c - strtok() 未打印正确的值

c - 如何迭代Unicode字符? (不是代码点)

使用 Arduino 的自定义枚举类型声明