Поэтому обычно, когда я хочу напечатать что-то в предыдущей строке в терминале, я просто делаю:
printf("\rprint a number %d", number);
fflush(stdout);
Так что для программы, которую я пишу, я хотел сделать именно это и попытался:
printf("\r%s - %s", buffer1, buffer2);
fflush(stdout);
Где
buffer1, buffer2 = malloc(sizeof(char)*100);
Это, однако, не работает, оно печатает на новой строке каждый раз.Я предполагаю, что это как-то связано со мной, используя char * вместо char [100] или с их размером?
Пример вывода (цвета удалены из кода для простоты):
edit: buffer_1
заполняется в другом потоке от stdin:
while (true) {
system("/bin/stty raw");
c = getchar();
system("/bin/stty cooked");
if (c == ' ') {
return;
}
// check if input is not to long
if (i == MAX_INPUT_LENGTH) {
return;
}
// Get the latest added char and add to buffer
t_a->input_buffer[i] = c;
i += 1;
}
И buffer_2
назначается выход из system(find)
команда:
FILE *fp = popen("find -name a ", "r");
char temp_buf[1024];
// Get output of find command
int i = 0;
while (fgets(temp_buf, sizeof(temp_buf), fp) != 0 && i < MAX_NUM_RESULTS) {
strcpy(result_buffer[i], temp_buf);
i += 1;
}
pclose(fp);
Любые подсказки приветствуются.