Мне нужно ввести пользователей (звездочку или пробел), и если пользователь ввел звездочку I затем вставлял бы 1 в массив, если бы пользователь ввел пробел, я бы тогда ввел 0 в массив. Вот то, что я до сих пор:Добавьте 1, если пользователь ввел «*» или добавил 0, если пользователь ввел «» в массив в C
#include <stdio.h>
#include <stdlib.h>
void userInput(){
printf("Enter Generation 0 (Length must be 10, * for 1 and " " for 0):\n");
char c; /* int */
int count;
char arr[10];
for(int i = 0; i < 10; i++){
scanf("%c", &c);
if(c == '*')
arr[i] = '1';
else
arr[i] = '0';
}
for(int j = 0; j < 10; j++){
printf("%c", arr[j]);
}
}
int main(int argc, const char * argv[]) {
userInput();
}
Проблема заключается в том, что цикл только позволяет пользователю ввести символ в 6 раз, а затем печатает.
выход, если я введу все * s:
Enter Generation 0 (Length must be 10, * for 1 and for 0):
*
*
*
*
*
1010101010
выход, если я все пробелы:
Enter Generation 0 (Length must be 80, * for 1 and for 0):
0000000000
'scanf ("% c ", &c);' -> 'scanf ("% c ", &c);' обратите внимание на добавленное пространство, чтобы предотвратить чтение предыдущей 'новой строки'. –
В качестве альтернативы предложению Weather Vane , убедитесь, что введенный символ является либо звездочкой, либо пробелом перед добавлением в массив. (Это может включать в себя поворот цикла for к while, где вы выдвигаете 'i' только при добавлении к строке.) –
Если вы 're on ascii, вы можете записать '' 0 '+ ((c >> 1) и 1)' в массив безоговорочно. – EOF