c - 在 c 中将 vector 转换为字符串

标签 c

我正在尝试使用以下函数将 vector 转换为字符串。

char* my_vect2str(char** input)
{
    int i;
    char* ret = (char*)xmalloc(sizeof(char*));
    for(i=0; input[i] != NULL; i++)
    {
        if(*input[i] == '\0')
            ret[i] = ' ';
        else
            ret[i] = *input[i];
    }
    ret[i] = '\0';
    return ret;
}

这似乎只是获取 vector 中每个字符串的第一个字符。如何更改我的 for 循环以使其正常工作?谢谢!

最佳答案

您的 malloc 应该是指针内容的大小,而不是指针本身。您也不需要转换 malloc void *。您需要一个内部循环计数器才能遍历指针的两个维度。这应该有效:

char* my_vect2str(char** input)
{
    int i;
    int count = 0;
    char* ret = (char*)malloc(sizeof(char*)); // should be a larger size
    for(i=0; input[i] != NULL; i++)
    {
        int j = 0;
        while(1){
            if(input[i][j] == '\0'){
                ret[count++] = ' ';
                break;
            }else{
                ret[count++] = input[i][j];
            }
            j++;
        }
    }
    ret[count] = '\0';
    return ret;
}

关于c - 在 c 中将 vector 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057803/

相关文章:

c - 如何将整数转换为其 32 位二进制等值

C - 计算从 X 年到 Y 年的所有日期

c - 对 OpenGL 绘图形状使用值而不是 -1...1?

c++ - 如何从进程内部确定 CPU 和内存消耗

c - 使用指针填充矩阵

c - C 程序中的答案不正确,我缺少什么?

c - 如何比较文件中的字符串和标准输入字符串

c - 循环在 C 语言中运行超过预期

android - 将 CImg 库添加到 android NDK(用于图像处理)

c - SEEK_HOLE 始终指向文件末尾