各位哥哥帮忙看一下这个简单的C程序!!!看是不是错了!!!

来源:百度知道 编辑:UC知道 时间:2024/05/22 23:30:52
#include<stdio.h>
#include<string.h>
main()
{
int st[3][60],i,j,k,l,m,n;
printf("input string:\n");
gets(st);
for(i=0;i<3;i++)
{
for(j=0;j<60;j++)
{
if(st[i][j]>='A'&&st[i][j]<='Z')
k=k+1;
if(st[i][j]>='a'&&st[i][j]<='z')
l=l+1;
if(st[i][j]==' ')
m=m+1;
else
n=n+1;
printf("%d,%d,%d,%d,%d\n",i+1,k,l,m,n);
}
}
}

gets(st)
这个地方是有问题的。
你定义的st数组的类型是 int
但gets()的原型为:
char* gets(char* buf);
所以此处编译无法通过。

但即使修改此处之后,函数运行也达不到预期的效果。
建议你找资料看一下gets函数。
ps:
1: 此外,你也没有必要使用二维数组。
2:定义的变量如果用于计数,最好进行初始化。
3: gets是一个不推荐使用的每次一行I/O函数。原因是调用这在使用用gets时不能指定缓存的长度。这样就可能造成缓存越界(如果该行长于缓存长度),写到缓存之后的存储空间中,从而产生不可预料的后果。