mọi người giúp em với, chỉ em cách mà nhập tữ liệu vào cấu trúc struct hồm: int, char, double
trên 1 dòng, cách nhau bở đấu phẩy:
vd: int maSoSV;
char hoVaTen[50];
double gpa;
nhập: 1111, hovaten a, 4.0
mọi người giúp em với, chỉ em cách mà nhập tữ liệu vào cấu trúc struct hồm: int, char, double
trên 1 dòng, cách nhau bở đấu phẩy:
vd: int maSoSV;
char hoVaTen[50];
double gpa;
nhập: 1111, hovaten a, 4.0
Thử như sau:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int a;
char ht[40];
double d;
scanf("%d,%[^,],%lf", &a, &ht, &d);
printf("%d %s %lf", a, ht, d);
return 0;
}
Làm như cách @noname00 cũng được, nhưng nếu em thix style “1 line for all” thì search với key word “scanf with dilimiter”
[code]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
int maSoSV;
char hoVaTen[50];
double gpa;
}student;
int main()
{
int n,i;
scanf("%d",&n);
student std = (student)malloc(n*sizeof(student));
char input[100];
for(i=0;i<n;i++)
{
fflush(stdin);
fgets(input,100,stdin);
input[strlen(input)-1] = '\0';
sscanf(input,"[^,]|%[^,]|%lf",std[i].maSoSV,std[i].hoVaTen,std[i].gpa);
}
for(i=0;i<n;i++)
{
printf("%d - %s - %.1lf ",std[i].maSoSV,std[i].hoVaTen,std[i].gpa);
}
}[/code]
giuops em voiws, sai ở chỗ nòa vậy bác.
Mẫu của bạn bị sai rồi
bác sữa giúp em được k, em làm theo cả trên stackover mà nó vẫn sai
Mình có ví dụ ở trên rồi mà
Ngoài ra phần nhập bạn chưa truyền con trỏ vào, nên nhập sẽ bị sai đấy.
bác ơi, nó lỗi này
prog.c: In function 'main':
prog.c:25:9: error: format '%[^,' expects argument of type 'char *', but argument 3 has type 'char **' [-Werror=format=]
scanf("%d,%[^,],%lf", &std[i].maSoSV, &std[i].hoVaTen, &std[i].gpa);
^
cc1: all warnings being treated as errors
giúp em với.
Ho và tên ko cần truyền địa chỉ đâu
Ở trên mình code bừa khúc đó đấy.
Còn ẩu như mình thì tắt các flags -Werror -Wfatal-errors
đi là tung tăng bay lượn.
em bieets cai đây mà đôi khi vẫn mắc phải. giờ em muốn bỏ thêm 1 ký tự nữa có được k bác
Được chứ, ta sẽ dùng %*[char]
để ignore những char
đi
http://www.cplusplus.com/reference/cstdio/scanf/
"%d%*[,.]%[^,.]%*[,.]%lf"