Я новый программист на C, и я борюсь с проблемами, связанными со строкой, у меня есть следующий код:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#define MAXNOME 60
typedef struct aluno
{
char codigo[5];
char nome[MAXNOME];
char cpf[11];
char periodo[6];
} aluno;
void adicionaAluno(){
aluno novoAluno;
// adiciona codigo do aluno
printf("\nDigite o codigo do aluno: ");
scanf("%s", novoAluno.codigo);
// adiciona cpf do aluno
printf("\nDigite o CPF do aluno: ");
scanf(" %s", novoAluno.cpf);
printf("\nDigite o periodo do aluno: ");
scanf(" %s", novoAluno.periodo);
// adiciona nome do aluno
printf("\nDigite o nome do aluno: ");
scanf(" %[^\n]", novoAluno.nome);
printf("%s\n", novoAluno.nome);
printf("%s\n", novoAluno.cpf);
printf("%s\n", novoAluno.codigo);
printf("%s\n", novoAluno.periodo);
}
int main(){
adicionaAluno();
return 0;
}
Когда я запускаю его со следующим вводом:
Digite o codigo do aluno: 19404
Digite o CPF do aluno: 90998596272
Digite o periodo do aluno: 2020.1
Digite o nome do aluno: Bruno Mello
Я ожидаю, что он вернется:
Bruno Mello
90998596272
19404
2020.1
Но вместо этого он вернется:
Bruno Mello
909985962722020.1
19404Bruno Mello
2020.1
Я просто не могу понять, почему это происходит, может кто-то объяснить, почему этот код не работает и как я могу это исправить?