我的问题如下:我有一个文本文件,我把所有的内容都读到了一个字符串中。现在我需要创建一个字符串数组,把原来的字符串分成大小相等的块。我将对每个块执行一些操作,但是我很难理解字符串数组在C中是如何工作的。
在下面的代码中,我 * 似乎 * 能够实现对原始数组的拆分。
文本文件如下所示:
0123456791
abcedfghij
thirt
然后放入一个名为buffer的char数组,并执行以下操作:
int n = 9;
int chunk = strlen(buffer)/division; // answer is 3
char array_chunks[9][3];
for (int i = 0; i < n; i++){
{
int starting_point = i*chunk;
memcpy(array_chunks[i],(buffer+starting_point), chunk);
// buffer has 27 characters in this example
printf(":%s\n", array_chunks[i]);
}
}
它给出了:
012
345
679
1
a
bcd
efg
hij
th
irt
这就是我想要的,因为它给了我3个块的原始字符串(包括换行符,这对我以后想做的事情来说很好),但是,当我再次尝试打印字符串数组的每个索引时,我得到了下面的结果:
一个三个三个一个
我要做的是调用n上的一个函数(在本例中为9个)字符数组,每个数组的大小为块的大小(在本例中为3)但是在打印每个char数组之后,它似乎没有按照我的预期进行分区,或者在第一个for循环中显示给我的方式。当我继续使用这些块时,我得到了分段错误。我想我误解了C中字符串数组的工作原理,但是我实在找不到很多关于我想要完成的事情的信息。任何帮助都是非常感谢的
1条答案
按热度按时间kkbh8khc1#
感谢Jonathan Leffler提供的解决方案,我必须为每个char数组分配空间,然后给每个char数组分配一个空字节,如下所示: