gpt4 book ai didi

C - 将字符串拆分为不带分隔符的 n 个子字符串数组

转载 作者:行者123 更新时间:2023-11-30 16:20:40 25 4
gpt4 key购买 nike

假设我们有这个输入字符串:

str[1024]="ABCDEFGHIJKL"

并且想要这个输出数组:

{"ABC", "DEF", "GHI", "JKL"}

如何将 str 中的每 3 个字符拆分为子字符串数组?

这是我的代码,但它只打印前 3 个字符,而不实际将它们存储在数组中:

int main(){
char str[MAX]="ABCDEFGHIJKL";
int count=0, i=0;
char sub[3];
char arr[6][3]={};

while (count<3){
sub[i]=str[i+count];
count++;
printf("%c", sub[i]);
}
}

最佳答案

只需遍历整个字符串并将每个字符放在适当的位置即可。不要忘记字符串“ABC”占用四个字节。

当您浏览输入字符串的字符时,它们进入的输出字符串如下所示:

0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3

那是i/3。它们在输出中所处位置的模式如下所示:

0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2

那是i%3。因此,如果 i 是输入字符串中的位置,则输出数组中的位置是 [i/3][i%3]。因此:

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

#define MAX 512

int main(){
char str[MAX]="ABCDEFGHIJKL";
int count=0, i=0;
char sub[3];
char arr[MAX/3][4]={};

/* Go through the string putting each character in
its proper place */
for (int i = 0; i < strlen(str); ++i)
arr[i/3][i%3] = str[i];

/* Print the strings out */
for (int i = 0; i < (strlen(str) / 3); ++i)
printf("%s\n", arr[i]);
}

ABC
DEF
GHI
JKL

关于C - 将字符串拆分为不带分隔符的 n 个子字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55211427/

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