鄙人才疏学浅,此中鄙陋甚多,望海涵。
题目描述
给定一行长度不超过100的字符串,请你求出它的具体长度。
输入格式
输入一行,表示一个字符串。注意字符串中可能包含空格。
输出格式
输出一个整数,表示它的长度。
样例
输入样例:
I love Beijing.
输出样例:
15
算法1
C语言代码
#include<string.h>
#include<stdio.h>
int main()
{
char s[105];
gets(s);
printf("%d", strlen(s));
return 0;
}
算法2
C++ 代码(常用)
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string a;
getline(cin, a);
cout << a.size() << endl;
return 0;
}
算法3
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[105];
cin.get(a, 105);//需要注意cin.get()不会把换行符取出删除,影响下一次读入!
cout << strlen(a) << endl;
return 0;
}
算法4
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[105];
cin.getline(a, 105);//需要注意cin.getline()会把换行符取出删除,不影响下一次读入!
cout << strlen(a) << endl;
return 0;
}
顺带一提 cin 和 scanf
读入字符串时遇到空格就停止了。
补充
算法5
python3 代码
print(len(input()))
算法6
java 代码
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
String a = cin.nextLine();
System.out.println(a.length());
}
}
算法7
go语言代码
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var scan = bufio.NewScanner(os.Stdin)
scan.Scan()
fmt.Printf("%d", len(scan.Text()))
}
个人小结:
- 按整行读到string ,推荐用 方法2 getline(cin, string)
- 按整行读到char[] ,推荐用 方法4 cin.getline(cin, char*)
- 读单个字符串,推荐用
cin>>
啰嗦解释如下:
### 按行读
方法2
getline(cin, string)
和 方法4cin.getline(cin, char*)
会读到回车为止,并且会把回车丢弃。方法3
cin.get(cin, char*)
不丢弃回车其他: fgets 会多读入一个回车,比较麻烦
### 读字符串
cin >> char*
会自动忽略起始的空格/回车/tab,结尾如果有回车空格,不会丢弃。 ” aa” => “aa”scanf("%s", char*)
同上cin >> string
同上谢谢
这波与ID配合的不是很好,哈哈。
需要注意 ,cin.getline()会把最后的换行符取出来并删掉,而cin.get()不会把换行符取出来!会影响下次读入,需要注意。
嗯,多谢大佬指点!
这是啥意思。。
这个东西还是很复杂的!给你发2段代码,你看不懂再和我说,顺便你也可以再结合百度去了解!
运行结果
输入
输出
那这样的意思是不是在有些题目中,假如有要求到字符数组的个数,没有正确的处理会导致最后的个数多一个,假如是这样,解决方法是用if吧数组最后多出来的换行符丢掉吗?
比如这样
怎么说呢!其实这个东西就是告诉你有些东西不要用,毕竟不考试,要是比赛的话,熟练的用一种没有歧义又好懂的即可,像你说得那样,完全可以用 cin 读,如果说要读有空格的一行就用getline读就行!
运行结果
输入
输出
好的谢谢
那就不点个赞再走吗?哭唧唧~
tql,反复看了好几遍
不至于不至于
呜呜呜都怪你,考c的时候写成c++了
tql
C不是兼容c吗,为什么第一个c代码在C中过不了啊。
guliguli
good
#include [HTML_REMOVED]
#include [HTML_REMOVED]
#include [HTML_REMOVED]
using namespace std;
char t[101];
int main()
{
fgets(t,10000,stdin);
cout<<strlen(t);
return 0;
}这还有一种
和大老师的身份很符
哈哈哈
感谢!
很全,感谢
谢谢
DLNB
谢谢!
好全面啊,赞!!!
哈哈哈,谢谢!
tqltql
tql tql
我愿称你为大哥
不至于不至于