我正在尝试划分一个缓冲区,一次划分为 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", ...}
我知道这听起来很傻,但我就是想不通。任何帮助将不胜感激
最佳答案
计算数组
arrSize
的长度(缓冲区长度除以 8,如果余数不为零则加 1)创建一个可变长度的
char[9]
数组,其大小在步骤 1 中计算,即char arr[arrSize][9]
使用
for
循环从 0 到arrSize
(不包含)。使用i * 8
计算缓冲区中的位置,并复制 8 个字节(如果它不是最后一个字符串)或更少(如果它是最后一个字符串)。您可以使用strncpy
或(如果您的平台有)strlcpy
(稍微安全一些)来执行此操作。如果您不使用strlcpy
,请确保将空终止符放在末尾。另外,确保不要通过向其中写入超过 9 个字符而溢出缓冲区(strncpy
或strlcpy
不应发生这种情况,但如果您执行其他操作,请当心为此)。
关于c - 一次拆分一个字符串 8 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48081986/