事情的起因是这样的,博主的一个高中同学在自学 c语言,看博主是读软件专业的,于是经常跑来问博主问题。一般博主都能轻松解决,不是因为c语言功力深厚,而是他问的那些东西实在太简单。尽管博主学的是c++,而且可怜的c++知识主要是从考前临阵磨枪以及一个简单的大作业中得来,但对付这些新手的问题还是绰绰有余的。不过这次遇到的问题碰到了博主的短板:输入输出。当时,考试不考,所以一直不懂。趁着这个机会,我补了一下缓冲区以及stdin的概念。
话不多说,上有问题的代码:
<pre name="code" class="cpp">void main()
{
char str[10][20];
int i,j,k,n;
printf("input n (n<=10):");
scanf("%d",&n);
printf("input %d string:",n);
for(i=0;i<n;i++)
{
gets(str[i]); //有问题的代码行
} //输入N个字符串
sort(str,n); //对输入的字符串排序
printf("sort string:\n");
for(i=0;i<n;i++)
puts(str[i]);
}
上面这段代码,乍一看好像没有问题,但运行时问题就来了:它只接受n-1个字符串的输入。
我修改了一下代码,把有问题