我有一个256个字符的字符串,我想在c中将它分成64个4个字符的字符串,但我没有分隔符,是否有任何功能可以这样做?
我有以下代码:
char message[256]="MSN0MSN1MSN2MSN3..";
char a[4];
for(i=0;i<64;i++)
{
memcpy(a[i],message+(i*4),4);
*(ram_tx+i)=a(i);
}
ram_tx的部分工作,代码中的问题是memcpy,因为当我打印a [I]时显示:
MSN0 MSN1 MSN23
答案 0 :(得分:2)
在64中剪切字符串是否有问题?
#define NB_STRING 64
#define STRING_LEN 4
int main(void)
{
char input[256] = "... something";
char output[NB_STRING][STRING_LEN + 1];
for (size_t i = 0; i < NB_STRING; ++i) {
memcpy(output[i], input + (i * STRING_LEN), STRING_LEN);
output[i][STRING_LEN] = '\0';
}
for (size_t i = 0; i < NB_STRING; ++i) {
printf("%s\n", output[i]);
}
return (0);
}
OP插入以下代码后编辑:
char message[256]="MSN0MSN1MSN2MSN3..";
char a[4];
for(i=0;i<64;i++)
{
memcpy(a[i],message+(i*4),4);
*(ram_tx+i)=a(i);
}
嗯,它确实可能不起作用,首先是因为我们不知道&#34; ram_tx&#34;是(他的类型,特别是),因为代码非常可疑。
你声明一个&#34; char [4]&#34;然后你做&#34; a(1)&#34;。你明白在这里,你称之为功能 nammed&#34; a&#34;使用参数&#34; 1&#34; ?即使你通过put&#34; a [1]&#34;或者只是&#34; a&#34;为了在ram_tx中复制数组,好吧,它似乎总是可疑的,即使ram_tx是一个指针数组(因为所有指针都指向一个点是什么意思?)。
了解在每个for循环中,您将删除&#34; a&#34;的先前值。 是&#34; ram_tx&#34;对显示器负责吗?如果是,你可以添加一个定界符,以便了解&#34; a&#34;真的包含? 此外,是&#34; ram_tx&#34;等待&#39; \ 0&#39; ?因为你没有添加它,它可能是&#34;添加&#34;一些你不想要的垃圾价值。