数学建模社区-数学中国
标题:
数据结构之字符串学习感悟
[打印本页]
作者:
慢跑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! G
struct 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) E
int 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