文字列に文字を 1 つずつ追加しようとしています。私はこのようなものを持っています:
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は行を調べて、さまざまな条件に基づいてトークン化し、そのフラグメントをトークンに配置します。変数バッファーに一時文字列を作成しています。これを行うには、文字ごとに行をたどる必要があります。
私は現在やっています:
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
そのため、出力は文字列がめちゃくちゃになっていることを示しています。この文字列を文字ごとに作成する最良の方法は何ですか? 私の文字列操作は正しいですか?
どんな助けでも大歓迎です!
ありがとう!