我安静地四处寻找了一段时间,但令人惊讶的是我找不到答案:
我想重写一个从 [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/