Для моего летнего проекта я построил маленький и немного дурацкий механизм шифрования, мне хотелось, чтобы у меня была функция, позволяющая пользователю вводить серии строк / символов и шифровать их прямо в терминале, но по какой-то причине программа (я думаю, что ее scanf) печатает только первое слово. Это может быть способ определения конца ввода пользователя, но я считаю, что проблема в scanf, а не в моем коде (хотя я читаю это, и это заставляет меня задавать вопросы). Вот код, который является подходящим:
printf("would you like to [e]ncrypt or [d]ecrypt, or type a word to encrypt\n");
char q[50];
for(int s = 0; s<50; s++){ //initialize string to '0'
q[s] = '0';
}
scanf("%s \n", q); //reads input from user
for(int s = 0; s<50; s++){ //for loop to read every char and encrypt it
if(q[s] == '0'){ //'0' determines the end of line
break;
}else{
union shifter sh = { 0 }; //uses a union to shift the char to unreadable (relatively) char
sh.str = q[s];
sh.i += 5;
printf("%c", sh.str); //prints out chars one at a time
}
}
printf("\n"); //new line when done
inb4 вы, ребята, говорите, что пользователь не может ввести 0, я знаю это, как дополнительный вопрос, могу ли я инициализировать его как нечитаемый символ, выполнив, скажем,
char = 3;
и положить его как нечитаемый символ (точнее конец теста)
спасибо за помощь