Текущее состояние программы
Я делаю программу, которая считывает ввод символов пользователем до новой строки и печатает их в обратном порядке.
Вывод, который я получаю, правильный, но я хочу оптимизировать код.
В основном я написал код, который выполняет мою функцию вставки n раз (n представляет количество символов, которые хочет пользовательвход).Итак, прямо сейчас пользователю необходимо сначала ввести количество символов, которые они хотят ввести, а затем они могут ввести символы.
Как я на самом деле этого хочу
Я хочу сделать так, чтобы пользователь мог просто вводить символы без необходимости предварительно указывать количество символов, которые они хотят ввести,
Мои попытки
Попытка с использованием цикла while, но получен неправильный результат:
Введено "asdf" в качестве ввода
и получено«fs» в качестве вывода
int main(){
struct Node* head = NULL;
printf("Enter the chars you want to type: ");
while (getchar() != '\n') {
head = Insert(head,getchar());
}
Print(head);
}
Попытка с использованием оператора if, но с ошибочным результатом:
Ввод «asdf» в качестве ввода
и получение «s» в качестве вывода
int main(){
struct Node* head = NULL;
printf("Enter the chars you want to type: ");
if (getchar() != '\n') {
head = Insert(head,getchar());
}
Print(head);
}
Мой код
#include <stdio.h>
#include <stdlib.h>
struct Node {
char data;
struct Node* linkToNext;
};
void Print(struct Node* head){
while (head != NULL) {
printf("%c", head -> data);
head = head -> linkToNext;
}
}
struct Node* Insert(struct Node* head, char input){
struct Node* pointerToNode = (struct Node*)malloc(sizeof(struct Node));
pointerToNode -> data = input;
pointerToNode ->linkToNext = head;
head = pointerToNode;
return head;
}
int main(){
struct Node* head = NULL;
int i, n;
printf("Enter the amout of chars you want to type: ");
scanf("%d", &n);
for (i = 0; i <= n; i++) {
head = Insert(head,getchar());
}
Print(head);
}
Пример результата выполнения кода
Введите сумму символов, которую вы хотитетип: 4
asdf
fdsa