c - 如何在c中重写char数组?

标签 c arrays pointers char overwrite

我安静地四处寻找了一段时间,但令人惊讶的是我找不到答案:

我想重写一个从 [0] 开始的 char 数组,但发生的一切是:它总是追加。这是我的代码:

算法是:我有一个很长的字符串,我喜欢将其分成几行(只要行尾有空格)。每行应保存在数组 Index (lineContent) 中;

void print_text(char* content, int menu_width, int which_selected, int menu_height, int scroll_pos)
{
    int posCounter = 0;
    int charCounter = menu_width-10;
    int printOutCounter;

    char* lineContent[400]; // 400 lines max

    short spaceFound;

    while (strlen(content) > menu_width) // If string is longer than 1 line
    {
        //Interesting Part ---------- START

        char changeString [strlen(content)];
        char printString [menu_width-10];
        spaceFound = 0;
        charCounter = menu_width-10;
        lineContent[posCounter] = malloc(MAXITEMSTR);


        while (spaceFound == 0)
        {
            if (content[charCounter] == ' ')
            {
                // I guess the error goes between here ...
                strncpy(changeString,content,strlen(content));
                strncpy(printString,content,menu_width-10);
                // ...and here
                memmove(&changeString[0], &changeString[charCounter], strlen(content));
                content=changeString;
                lineContent[posCounter]=printString;
                strcat(lineContent[posCounter],"\0");
                posCounter++;
                spaceFound = 1;

                //Interesting Part ---------- END
            }

            charCounter--;

            if (charCounter <= 0)
                spaceFound = 1;
        }
    }
}

正如我所说,最后,当检查 lineContent 的内容时,每个条目都是相同的(最后一行的条目)。

我认为这是因为 strcpy 只是附加到末尾,因此我必须清除数组,以删除前一行。因此它将从 [0] 开始,而不是从最后打印的字母开始。

有人知道如何做到这一点吗?是否有一个函数可以覆盖 char 数组而不是附加它?

亲切的问候

最佳答案

Strcat 追加到末尾,strcpy 覆盖存储在字符串中的值。

关于c - 如何在c中重写char数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25203657/

相关文章:

c++ - 查找最大质因数 - 代码的复杂性

c - 将 sizeof 与 char *array[] 一起使用

java.io.StreamCorruptedException : invalid stream header: 48656C6C

c++ - 通过引用传递时取消引用指针

c++ - 将 shared_ptr 作为指向指针的指针传递

c - 在 C 中将多维数组作为函数参数传递

python - 相当于在 Numpy 中使用 #include <Numeric/arrayobject.h>

java - 显示 1 的数组的平均值

arrays - Unix shell 迭代两个值数量不等的列表

c++ - 在被删除的对象内部动态分配对象会发生什么?