通过函数C ++截断char数组

时间:2017-08-19 23:12:50

标签: c++ truncate

尝试格式化此函数,因为它会截断一个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应该充当空终止,无论用户输入字符串将在该数字后截断。

但是这段代码不起作用,它没有显示该函数的输出。谁知道我做错了什么?感谢。

2 个答案:

答案 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;
}