구조를 사용하여 데이터를 입력하는 간단한 프로그램을 작성하고 싶습니다.구조체 배열; 여러 문자열 입력
내 원래 프로그램은 다음과 같이 보았다 :
#include <stdio.h>
#include <stdlib.h>
struct student {
int num;
char name[20];
};
int main()
{
int size, i;
scanf("%d", &size);
struct student s[size];
for(i=0; i < size; i++){
scanf("%d", &s[i].num);
scanf("%s", &s[i].name);
}
for(i=0; i < size; i++){
printf("no.:%d\n", s[i].num);
printf("name:%s\n", s[i].name);
}
return 0;
}
내 테스트 입력은 다음과 같습니다
2
1 Name1
2 Name2
그것은 작동했지만 데이터가 올바르게 입력 한 경우에만 사용할 수 있습니다. 하지만 내 구조에서 더 많은 문자열을 사용하려고하면 엉망이되기 시작했습니다. 이 같은 예를 들어 뭔가가 작동하지 않습니다를 들어 :
#include <stdio.h>
#include <stdlib.h>
struct student {
int num;
char name[20];
char gender;
char address[20];
};
int main()
{
int size, i, j;
scanf("%d", &size);
struct student s[size];
for(i=0; i < size; i++){
scanf("%d", &s[i].num);
scanf("%s", s[i].name);
scanf("%s", s[i].gender);
scanf("%s", s[i].address);
}
for(i=0; i < size; i++){
printf("no.:%d\n", s[i].num);
printf("name:%s\n", s[i].name);
printf("gender:%s\n", s[i].gender);
printf("address:%s\n", s[i].address);
}
return 0;
}
은 내가 getchar가를 사용하려고, 그래서 그 문제는 문자열 입력을 scanf와의 사용에 두어야 이해(). 나는 이런 일이 효과가있을 것이라고 생각했다.
for(i=0; i < size; i++){
int j=0;
while((s[i].name[j]=getchar()) != ' ');
j++;
s[i].name[j] = '\0';
}
그래도 작동하지 않습니다. 이 시점에서 나는 혼란스러워서 무엇이 잘못되었는지를 잘 모릅니다. 제프 M No.2_road_city
1001
구조를 사용하여,하지만 난 그것을 수행하는 방법을 정확히 혼란 받고 있어요 : 나는 같은 입력 뭔가하고 싶은 말은.
을 경고 사용 첫 번째 단계는 전에 유래에 질문입니다'는 scanf ("% s '에, S [I] scanf ("% s", s [i] .gender);'=>'scanf ("% s", s [i] .name);' >'scanf ("% c", & s [i] .ge) – Stargateur
각각의'scanf()'호출이 올바른 번호 (각 호출에서 하나의 필드를 읽을 때 1)를 반환하는지 확인하십시오. 1을 반환하지 않으면 문제가 발생합니다. N 개의 통화를 하나의 통화로 결합하는 것이 더 나을 것입니다. 그렇게 할 수 있습니다. ['fgets()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html) 또는 POSIX ['getline()'] (http : /pubs.opengroup.org/onlinepubs/9699919799/functions/getline.html) 그리고'sscanf()'로 라인을 처리하십시오. –