关于C语言中的一个小问题~
来源:百度知道 编辑:UC知道 时间:2024/09/12 15:04:36
我在学习《The C Programming Language》中,有这么两个问题~
第一个问题是这段代码
#include <string.h>
int strlen(char s[])
{
int i;
i = 0;
while (s[i] != '\0')
i++;
return;
}
为什么总是提示错误呢?strlen(char s[])是什么意思呢?
第二个字符计数:
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
nc++;
printf("%ld\n",nc);
getch();
}
这个函数中,getchar输入和scanf输入有什么区别呢?这个怎么结束计数呢?就是EOF(End of Files)是什么输入?
暂时就这么些疑问~问题比较多,请各位大侠帮忙解释回答一下~每个问题加10分~~
我实在Win-Tc环境下开发的~哪个~好像是我打错了,我确实写得是 return i;
既然getchar只读取一个字符,那为什么我输入“abcdefg”这种字符串也可以读取出来呢?
第一个问题是这段代码
#include <string.h>
int strlen(char s[])
{
int i;
i = 0;
while (s[i] != '\0')
i++;
return;
}
为什么总是提示错误呢?strlen(char s[])是什么意思呢?
第二个字符计数:
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
nc++;
printf("%ld\n",nc);
getch();
}
这个函数中,getchar输入和scanf输入有什么区别呢?这个怎么结束计数呢?就是EOF(End of Files)是什么输入?
暂时就这么些疑问~问题比较多,请各位大侠帮忙解释回答一下~每个问题加10分~~
我实在Win-Tc环境下开发的~哪个~好像是我打错了,我确实写得是 return i;
既然getchar只读取一个字符,那为什么我输入“abcdefg”这种字符串也可以读取出来呢?
1.strlen需要返回一个int类型的值,return;只适合返回值为void的函数。char s[]表示函数参数的类型是字符数组,可以写成char *s。
2. getchar只从标准输入流中读取一个字符,而scanf可按格式化字串输入各种类型的数据。ctrl+z可产生EOF。
我先答第一个。这段代码目的是为了申明一个函数(strlen),这个函数的作用是求出字符串的长度。你把return;改在return i;试试
int strlen(char s[])表示strlen函数的参数只有一个字符数组。而你的代码里没有用到,你是用的int型。当然会报错了。
getchar()和scanf()是两个函数,前者是从输入设备输入一个字符,后者是从输入设备输入一串字符,可以是一个或一个以上。
1.strlen是标准库函数
2.因为使用了while循环语句,getchar一直读到字符串结束。
int strlen(char s[])需返回int数据, 把 return; 改成 return i; 就行了。
第二个 EOF是个宏定义,#define EOF -1。。即EOF=-1,你把EOF换成-1也是一样的,只不过EOF比较形象,表示文件的结束(值等于-1,ctrl+z可产生EOF)。