我搜索了一段安静的时间,但令人惊讶的是我找不到答案:
我想重写一个从[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
覆盖存储在字符串中的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句