我正在尝试将字符一个一个地添加到字符串中。我有这样的事情:
void doline(char *line, char *buffer, char** tokens){
}
我这样称呼它:
char *line = malloc(1025 * sizeof(char *));
fgets(line, 1024, stdin);
int linelength = strlen(line);
if (line[linelength - 1] == '\n'){
line[linelength - 1] = '\0';
}
char ** tokens = (char **) malloc(strlen(line) * sizeof(char *));
char *emptybuffer = malloc(strlen(line) * sizeof(char *));
parseline(line, emptybuffer, tokens);
所以 doline 会通过line并根据各种条件对其进行标记,并将其片段放入标记中。我正在变量缓冲区中构建临时字符串为此,我需要逐行遍历。
我目前正在做:
buffer[strlen(buffer)] = line[i];
然后在循环结束时:
*buffer++ = '\0';
但这是结果:
printf("Working on line: '%s' %d\n", line, strlen(line));
输出:在线工作:'test' 4
但是到函数结束时,缓冲区是:
*buffer++ = '\0';
printf("Buffer at the very end: '%s' %d\n", buffer, strlen(buffer));
输出:最后的缓冲区:'test' 7
所以输出显示字符串被弄乱了。逐个字符构建此字符串的最佳方法是什么?我的字符串操作正确吗?
任何帮助将非常感激!
谢谢!