【发布时间】:2020-04-02 14:03:25
【问题描述】:
我是 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
我就是不明白为什么会这样,有人能解释一下为什么这段代码不起作用,我该如何解决?
【问题讨论】: