数学建模社区-数学中国

标题: 数据结构之字符串学习感悟 [打印本页]

作者: 慢跑20    时间: 2014-2-25 22:51
标题: 数据结构之字符串学习感悟
数据结构第一章第一节讲了基础知识,涉及到一个小程序:输入学生学号、姓名,并输出。, T/ m3 N3 [' J' `
初步代码如下:  D) u* x! x! V4 b' t2 [
#include<stdio.h>1 p9 ~% d0 D2 h' a, P3 t$ Z4 r. W
#define n 2
* L" T1 w. i0 Y- m: N1 w! Gstruct Student{
  u* H( g* }. u  \0 G7 ]        char name[3];  s& Q. V( d7 r1 `
        int num;8 u7 X$ T8 z- U& Y2 K! X/ g! r
}stu[2];/ @9 d! R2 ^* }9 z1 D( @

3 {) _! A3 e# m; L3 o) Eint main(){# r4 Y$ S+ b: R5 {
        int i;5 l1 m4 ^- v* r, Z5 x# f
        for(i=0;i<n;i++), s, _5 X0 ~8 H' u+ e( G1 a
        {gets(stu[i].name);
$ i  W+ e% R8 i3 j( ?) m        scanf("%d",&stu[i].num);
' @* w, C4 w4 b        }
7 H% ~/ N' q9 k! Q) Q  f        for(i=0;i<n;i++)
9 ]2 G# U) g& o+ i( S9 X( m        {puts(stu[i].name);
: T" l$ C7 T. j5 {8 m8 [        printf("%d\n",stu[i].num);
6 j6 r, i% m3 A9 L5 e8 B& z; d        }5 a7 Q& }+ H9 F
        return 0;) b* h8 ~' F! i( ?% u6 c5 q$ J6 o
}9 B5 r: I+ |. o0 `) p  R9 K
比如我想输入第一个学生的姓名:s1,学号:10、% q1 N6 p1 O/ K
然后输入第二个学生的姓名:s2,学号:20.
9 N# c1 y. h& `: }! |但是还没有输完,只输入了s2,就显示除了结果,而且后边的结果不正确。$ [- l* p8 {4 R2 y9 h
这是为什么呢?
" r- S. k' ?% `( h仔细想一想。
! J3 `( y: \( n8 m最终才发发现了关键的问题:
! p/ u' t8 D6 `" Y在输完第一个学生的学号之后会敲一个回车,计算机把那个回车当成第二个字符串存进第二个字符数组里面了。* _+ U3 X: n8 t  ]1 o% ?  G
getcher就是用来存那个多余的回车的。
$ Z2 A# t! @: i原来,只需要在第一个循环,scanf之后加入getchar();就可以解决了问题。$ E! J& N% Y& s

. K  Q& {1 U6 K! H1 n
/ Y0 n$ h  i4 A& \8 o
$ \' s- T4 o6 g- f8 Z
2 ~% {3 f2 r3 }: W$ |; [$ X
作者: sdccumcm    时间: 2014-2-26 11:47
支持个      




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5