user-0 提问: 怎么同时输入字符串和数字

回复:
user: user-1
content: 函数设置一个标记位Flag，表示该输入数据类型（学生名字数组和成绩数组），这样公用了一个接口。例如Flag = 1 为学生名字，Flag = 2为学生成绩  不知道这是不是你想要的。

user: user-2
content: C++可以operator >>重载

user: user-3
content: 分两个数组，分别读入，然后后续合并做处理就可以，或者读取一行的方法读入，都可以。

user: user-0
content: 引用 5 楼 ovoovo 的回复:引用 4 楼 u012495008 的回复:[quote=引用 1 楼 ovoovo 的回复:] 分两个数组，分别读入，然后后续合并做处理就可以，或者读取一行的方法读入，都可以。后续合并处理的时候老是出问题，如果输入字符串用getchar(),成绩用scanf输入的话可不可行呢？都用scanf也不行。。。  参考如下代码的输入： #include <stdio.h> #include <stdlib.h> #include <string.h>     typedef struct _bookinfo {     char  name[60];     float price; }bookinfo;     int main() {       int nbookCount = -1;       int maxpriceindex = 0;       float maxprice = 0.0;       bookinfo *pBooklist = NULL;     printf("please intput the number of books:\n");     scanf("%d", &nbookCount);           if(nbookCount <= 0)     {         printf("error books count!\n");         exit(-1);     }           pBooklist = (bookinfo *)malloc(nbookCount * sizeof(bookinfo));     if(pBooklist == NULL)     {         printf("malloc memory failed!!\n");         exit(-1);     }           int i;     for(i=0; i<nbookCount; i++)     {         printf("please intput the %dth book name:\n", i+1);         scanf("%s", pBooklist[i].name);                   printf("please intput the %dth book price:\n", i+1);         scanf("%f", &pBooklist[i].price);         if(maxprice < pBooklist[i].price)         {             maxprice = pBooklist[i].price;             maxpriceindex = i;         }         printf("\n\n----------------------------------------------------\n", i+1);     }           printf("The most dear book is:[%s]. The price is:[%f]\n", pBooklist[maxpriceindex].name, pBooklist[maxpriceindex].price);           free(pBooklist); } [/quote] 非常感谢。

user: user-3
content: 引用 4 楼 u012495008 的回复:引用 1 楼 ovoovo 的回复:分两个数组，分别读入，然后后续合并做处理就可以，或者读取一行的方法读入，都可以。后续合并处理的时候老是出问题，如果输入字符串用getchar(),成绩用scanf输入的话可不可行呢？都用scanf也不行。。。  参考如下代码的输入： #include <stdio.h> #include <stdlib.h> #include <string.h>     typedef struct _bookinfo {     char  name[60];     float price; }bookinfo;     int main() {       int nbookCount = -1;       int maxpriceindex = 0;       float maxprice = 0.0;       bookinfo *pBooklist = NULL;     printf("please intput the number of books:\n");     scanf("%d", &nbookCount);           if(nbookCount <= 0)     {         printf("error books count!\n");         exit(-1);     }           pBooklist = (bookinfo *)malloc(nbookCount * sizeof(bookinfo));     if(pBooklist == NULL)     {         printf("malloc memory failed!!\n");         exit(-1);     }           int i;     for(i=0; i<nbookCount; i++)     {         printf("please intput the %dth book name:\n", i+1);         scanf("%s", pBooklist[i].name);                   printf("please intput the %dth book price:\n", i+1);         scanf("%f", &pBooklist[i].price);         if(maxprice < pBooklist[i].price)         {             maxprice = pBooklist[i].price;             maxpriceindex = i;         }         printf("\n\n----------------------------------------------------\n", i+1);     }           printf("The most dear book is:[%s]. The price is:[%f]\n", pBooklist[maxpriceindex].name, pBooklist[maxpriceindex].price);           free(pBooklist); }

user: user-0
content: 引用 1 楼 ovoovo 的回复:分两个数组，分别读入，然后后续合并做处理就可以，或者读取一行的方法读入，都可以。后续合并处理的时候老是出问题，如果输入字符串用getchar(),成绩用scanf输入的话可不可行呢？都用scanf也不行。。。