В настоящее время я пишу программу на C++ для управления некоторыми светодиодами путем отправки строк через терминалы в Arduino. Каждая строка заканчивается символом новой строки. Я написал тестовую программу, которая будет выводить на терминал, но есть проблемы с выходом в следующем фрагменте кода:fwrite выводит строку символов неверно
char* ledAddr = (char*)malloc(3);
char* rVal = (char*)malloc(3);
char* gVal = (char*)malloc(3);
char* bVal = (char*)malloc(3);
...
fread(ledAddr, 3, 1, stdin);
fread(rVal, 3, 1, stdin);
fread(gVal, 3, 1, stdin);
fread(bVal, 3, 1, stdin);
...
char* outputString = malloc(17);
outputString[0] = 't';
strncpy(outputString+1, rVal, 3);
outputString[4] = ',';
strncpy(outputString+5, gVal, 3);
outputString[8] = ',';
strncpy(outputString+9, bVal, 3);
outputString[12] = ',';
strncpy(outputString+13, ledAddr, 3);
outputString[16] = '\n'
fwrite(outputString, 17, 1, stdout);
Это мой тестовый вход:
180
255
0
0
Это мой ожидается выход:
t255,0,0,180
И это то, что я ветер с:
t
25,5
0,0,
184
Любая помощь будет оценена по достоинству.
Вы правы, я забыл учитывать, что 'fread()' не пропускает символы новой строки. Теперь он работает правильно. – MSalmo