通过函数C++截断字符数组

Truncating an array of char via function C++

本文关键字:字符 数组 C++ 函数      更新时间:2023-10-16

尝试格式化此函数,因为它会截断一个字符数组(用户输入的任何内容都会将其拆分为用户也输入的数字(

void truncate(char array[], int maxLength)
{
// Variable definition
int x = 0;
// While loop start.
while (array[x] <= maxLength)
{
cout << array[x];
x++;
}
}

函数头中的数组参数只是用户输入的字符串,它是一个字符数组。maxLength 参数也是用户输入的 int 变量,它可以是 3、4 或 5。maxLength 应该充当空终止,无论用户输入字符串,在该数字之后都会截断。

但是此代码不起作用,它不显示函数的输出。有人知道我做错了什么吗?谢谢。

这里的问题是这样的:

while (array[x] <= maxLength)

这是将数组返回的字符 x 与 maxLength 的值进行比较,因此您将字符与 int 进行比较。为此,我会推荐更标准的循环:

for (int x = 0; x < maxLength; x++) {
cout << array[x];
}
int truncate(const char *str, int maxchunk, char ***chunks)
{
int len = strlen(str);
int nchunks = len / maxchunk + !!(len % maxchunk);
char **table = malloc(sizeof(char *) * (nchunks));
if (table != NULL)
{
for (int i = 0; i < nchunks; i++)
{
if ((table[i] = malloc(sizeof(char) * maxchunk + 1)) == NULL)
{
for (int j = i - 1; j >= 0; j--)
{
free(table[j]);
}
free(table);
table = NULL;
break;
}
strncpy(table[i], str + i * maxchunk, maxchunk);
*(table[i] + maxchunk) = '';
}
}
*chunks = table;
return table == NULL ? -1 : nchunks;
}