尝试格式化此函数,因为它会截断一个char数组(用户输入的任何内容都会将其拆分为用户也输入的数字)
void truncate(char array[], int maxLength)
{
// Variable definition
int x = 0;
// While loop start.
while (array[x] <= maxLength)
{
cout << array[x];
x++;
}
}
函数头中的数组参数只是用户输入的字符串,它是一个char数组。并且maxLength参数也是用户输入的int变量,它可以是3,4或5. maxLength应该充当空终止,无论用户输入字符串将在该数字后截断。
但是这段代码不起作用,它没有显示该函数的输出。谁知道我做错了什么?感谢。
答案 0 :(得分:1)
问题在于:
while (array[x] <= maxLength)
这是将x处数组返回的字符与maxLength的值进行比较,因此您需要将char与int进行比较。我建议使用更标准的 for 循环:
for (int x = 0; x < maxLength; x++) {
cout << array[x];
}
答案 1 :(得分:-2)
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) = '\0';
}
}
*chunks = table;
return table == NULL ? -1 : nchunks;
}