如何从字符串文字中每行写出一定数量的字符?
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;
我正在学习 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;