如何从字符串文字中每行写出一定数量的字符?

How can I write a certain number of characters per line out of a string literal?

我正在学习 C 并试图找出字符串。如何分解一个简单的字符串文字以每行打印出 6 个字符?如果我的方法走上正轨,我有点困惑。谢谢!

例如:

   char someString = "Hello world, I like to fly high like a cloud!";
   char * temp = malloc(30);

   temp = someString;          //so I can manipulate a string literal

   int count = 6;

   for(int i=0; i<30; i++)
   {
      if(i<count)
      {      
         printf("%c", temp[i]);        
      }
      if(i == count)
      {
         printf("\n");
         count = count + count;
      }
    }

    free(temp);    //prevent memory leak










   

在C中,一个字符串实际上是一个字符数组,所以它必须被声明为一个数组...这意味着你需要在第一行的SomeString之后插入[] .并且由于您没有修改字符串,因此无需制作副本......但是如果您这样做,则无法通过简单的赋值复制字符串(同样是一个数组)。您将不得不使用 strcpy 函数,或者更好的是 strdup,它还可以为您处理内存分配。

你在 for 循环中的逻辑几乎是正确的,除了你在每次迭代中将计数加倍......这对于前两次迭代来说很好,其中计数为 6 和 12,但随后在第三次迭代中它是 24。你想要 count += 6; 而不是 count = count + count; 如果你愿意,你可以将字符块大小定义为一个宏,这样它就可以很容易地改变:把行 #define STEP 6 靠近程序的顶部。然后把int count = 6;改成int count = STEP;,把count += 6;改成count += STEP;