在C语言中将字符串拆分为一定大小的字符串

在C语言中将字符串拆分为一定大小的字符串,c,string,C,String,假设我有一个字符串“abcd1234efgh”。我想将其拆分为长度为4的子字符串,如: abcd 1234 efgh 我的C生锈了。以下是我写的: #include<stdio.h> #include<string.h> int main(void){ int i,j; char values[32]="abcd1234efgh"; char temp[10]; for(i=0;values[i]!='\0';){ for (j=0;j<4;j++,i+

假设我有一个字符串“abcd1234efgh”。我想将其拆分为长度为4的子字符串,如: abcd 1234 efgh

我的C生锈了。以下是我写的:

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

int main(void){

int i,j;
char values[32]="abcd1234efgh";
char temp[10];

for(i=0;values[i]!='\0';){
   for (j=0;j<4;j++,i++){
      temp[i]=values[j];
      printf("%c\n",values[j]);
   }
printf("string temp:%s\n",temp);
}

return 0;
}
#包括
#包括
内部主(空){
int i,j;
字符值[32]=“abcd1234efgh”;
煤焦温度[10];
对于(i=0;值[i]!='\0';){

对于(j=0;j注:代码是按4组打印,如果大小为4,则不打断并存储字符串

如果这是你要的

#include<stdio.h>
#include<string.h>
int main(void)
{
int i;
char values[32]="abcd1234efgh";
for(i=0;values[i]!='\0';)
{
    if( i % 4 == 0 ) printf("\n");
    printf("%c",values[i]);
}
return 0;
}
#包括
#包括
内部主(空)
{
int i;
字符值[32]=“abcd1234efgh”;
对于(i=0;值[i]!='\0';)
{
如果(i%4==0)printf(“\n”);
printf(“%c”,值[i]);
}
返回0;
}

这应该可以解决问题

如果您只想打印:

int len = strlen(values);
for (int off = 0; off < len; off += 4)
    printf("%.4s\n", values+off);
int len=strlen(值);
用于(int off=0;off
如果你想用4人一组做其他事情,那么我会考虑:

int len = strlen(values);
for (int off = 0; off < len; off += 4)
{
    strncpy(temp, values+off, 4);
    temp[4] = '\0';
    …do as you will with temp…
}
int len=strlen(值);
用于(int off=0;off
#包括
#包括
内部主(空){
int i,j;
字符值[32]=“abcd1234efgh12”;
煤焦温度[10];
对于(i=0;值[i]!='\0';){
对于(j=0;j
#包括
#包括
int main(){
char*str=“abcd1234efgh”;
尺寸小于等于4;
尺寸长度=strlen(str);
尺寸n=长度/分长度;
如果(n*sub_len
temp只需要保存4个字符。因为现在我每次迭代都会得到前4个字符。换句话说,它会一次又一次地重置并追加相同的前4个字符。我想要的是得到前四个,然后是下四个,以此类推,这样我就可以将它们输入另一个缓冲区。一个小问题是如果
v中的字符数值
不是4的倍数,您的输出不会以换行符结尾。这不应该有任何问题,只要在循环结束后添加一个换行符,您就永远不会完全清楚这个问题。我不这么认为,经验证据表明,如果字符串是
“abcd1234efg”
。有人能留下评论解释为什么投票否决这个答案吗?可能,这个程序中有一个潜在的错误。我注意到了以下内容。(1)
while(j
#include<stdio.h>
#include<string.h>

int main(void){

int i,j;
char values[32]="abcd1234efgh12";
char temp[10];

for(i=0;values[i]!='\0';){
   for (j=0;j<4;j++,i++){
      temp[j]=values[i];
   }
   while(j<4)
   {
        temp[j]=' ';
   }
   temp[j]='\0';
printf("string temp:%s\n",temp);
}

return 0;
}
#include <stdio.h>
#include <string.h>

int main() {
    char *str = "abcd1234efgh";
    size_t sub_len = 4;
    size_t len = strlen(str);
    size_t n = len / sub_len;
    if(n * sub_len < len)
        n += 1;

    char temp[n][sub_len+1];
    int i;
    for (i = 0; i < n; ++i){
        strncpy(temp[i], str + i*sub_len, sub_len);
        temp[i][sub_len]='\0';
        printf("string temp:%s\n", temp[i]);
    }
    return 0;
}