通过函数C++截断字符数组
Truncating an array of char via function C++
尝试格式化此函数,因为它会截断一个字符数组(用户输入的任何内容都会将其拆分为用户也输入的数字(
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;
}
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- 字符数组中的元素数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 使用字符数组作为 Map 中的键
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 按顺序声明的字符数组重叠
- 在 C++ 中字符串的大小与字符数组的大小
- 寻找一种更好的方法来表示无符号字符数组
- 如何打印 2D 字符数组C++
- 从字符数组的元素中减去'a'是什么意思
- 我是否不正确地集中了这些字符数组?