scanf отформатировал несколько специальных символов с массивом
Я хочу иметь 3 ввода символов, например |
или же %
, но вместо получения | | %
, Я получил | |
,
Терминал:
| ^ !
| ^
Код здесь:
#include <stdio.h>
char a[10], b[10], c[10];
int i;
int count;
int main(int argc, char const *argv[]) {
scanf("%d", &count);
for (i = 0; i < count; i++) {
scanf("%c %c %c", &a[i], &b[i], &c[i]);
printf("%c %c %c\n", a[i], b[i], c[i]);
}
return 0;
}
Пожалуйста, скажите мне, что я делаю не так. Благодарю.
1 ответ
Решение
Чтобы прочитать одиночные символы, необязательно разделенные пробелами, вы должны явно игнорировать этот пробел с помощью в строке формата перед
%c
,
Также проверьте возвращаемое значение scanf()
,
Вот исправленная версия:
#include <stdio.h>
int main(int argc, char const *argv[]) {
char a[10], b[10], c[10];
int i, count;
if (scanf("%d", &count) == 1 && count <= 10) {
for (i = 0; i < count; i++) {
if (scanf(" %c %c %c", &a[i], &b[i], &c[i]) != 3)
break;
printf("%c %c %c\n", a[i], b[i], c[i]);
}
}
return 0;
}