一种比较简洁的C语言写法

字符串最后一个单词的长度

http://www.nowcoder.com/questionTerminal/8c949ea5f36f422594b306a2300315da

我觉得,一下这个应该是我写出来的比较简单的一种写法了哈哈哈哈哈哈!!!!!已经调试过了请放心用。
小小的总结一下:
1,scanf()函数,如果转换说明是%s的话,他的读取规则是,“读取除空白以外的所有字符串”。scanf()函数跳过空白开始读取第一个非空白字符,并保存非空白字符直到再次遇到空白字符。也就是说!!!!scanf()函数根据%s转换说明读取一个单词!!!
2,EOF,EOF是stdio.h文件里定义的特殊值,通常情况下#define指令会把EOF定义为“-1”,当scanf()读取到文件结尾时,就会返回EOF(如果是转换说明错误好像是会返回“0”)

#include <stdio.h>
#include <string.h>

int main()
{
    char str[1000];
    int a=0,i=0;

    while(scanf("%s",str) != EOF)
    {}
    a=strlen(str);
    printf("%d",a);
}
全部评论
输入时一般是换行结束输入,所以最后不能跳出while循环吧
1 回复 分享
发布于 2021-08-30 19:46
可以理解为scanf函数一直读取,遇到空格停止。但由于后面的eof,字符串还没结束。循环过来后继续scanf,相当于空格后面的一个单词。而且每次scanf对str相当于重新读写。读到最后一个单词就结束循环,最后的str就是最后的一个单词。str长度设置10也行,一个单词长度差不多了。
23 回复 分享
发布于 2021-04-02 12:47
为什么我运行你的解法,他一直在while里面转,就走不到a=strlen啦?
6 回复 分享
发布于 2021-03-02 16:40
为啥我运行是死循环啊
6 回复 分享
发布于 2020-08-26 22:05
为什么strlen(str)得出的是最后一个字符串的长度啊?
5 回复 分享
发布于 2020-04-10 18:29
不考虑内存越界的方法都是垃圾。
3 回复 分享
发布于 2021-07-28 14:14
这个方法是如果用编译器写代码的化,要在输入结尾模拟文件结尾才行,ctrl+Z,才会得到EOF结束循环,不然就跳不出whille循环了
2 回复 分享
发布于 2023-03-08 10:47 河北
我试了,在线编程能过,用编译器过不了,这个代码可能有问题
2 回复 分享
发布于 2022-06-06 15:44
从后往前读,遇到空格后停止计数,返回数值是不是要简单的多
2 回复 分享
发布于 2021-09-14 12:38
我用你的程序,一直在scanf 走不到a=strlen
2 回复 分享
发布于 2021-06-22 15:03
在线编程的是采用文件输入参数的吗?在ubuntu的终端界面执行程序会在scanf那无限循环,当采用文件重定向输入时,因为读到文件尾,从而结束循环,打印正确的数值了
1 回复 分享
发布于 2021-10-09 10:37
定义了个i变量没用到呀
1 回复 分享
发布于 2021-09-06 23:28
牛逼
1 回复 分享
发布于 2021-05-14 23:21
这个EOF的用法真是学习到了
1 回复 分享
发布于 2020-04-01 23:21
运行了,输入字符串,没有任何动静,没反应,那这段程序应该还是有问题
点赞 回复 分享
发布于 02-20 20:39 广东
编译器不能用,不知道哪里出了问题
点赞 回复 分享
发布于 2024-07-21 12:36 新疆
#include <stdio.h> int main() { char str[5000]; while (scanf("%s", str) != EOF) {} printf("%d", strlen(str)); return 0; } 定义int变量有点多此一举了</stdio.h>
点赞 回复 分享
发布于 2024-06-25 16:40 陕西
为什么while后面的{}里面没有函数
点赞 回复 分享
发布于 2024-04-26 18:48 云南
一个单词被分隔在两行的时候 会计算错误
点赞 回复 分享
发布于 2023-08-31 10:42 山东
为什么scanf("%s",str)单独写就不行了呢
点赞 回复 分享
发布于 2023-05-02 17:13 浙江

相关推荐

06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
330
82
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务