版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sty945/article/details/82560066
前言
如题所示
c语言情况
常规输入
#include <stdio.h>
int main()
{
char str[10] = {0};
scanf("%s", str);
printf("%s\n", str);
return 0;
}
test
fasdf as
fasdf
c语言会自动截断输入的空格
问题
- 输入字符串有空格,无法处理
- 输入字符串长度超过字符数组长度,不安全
改进
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
char str[10] = {0};
fgets(str, sizeof(str), stdin);
if (str[strlen(str) - 1 ] == '\n')
{
str[strlen(str) - 1] = '\0';
}
printf("%s\n", str);
return 0;
}
test
fads adfasdfad asda
fads adfa
c++情况
#include <iostream>
using namespace std;
int main()
{
char str[10] = {0};
cin >> str;
cout << str << endl;
return 0;
}
test
10fasd dfa
10fasd
改进
#include <iostream>
using namespace std;
int main()
{
char str[10] = {0};
cin.getline(str, sizeof(str));
cout << str << endl;
return 0;
}
test
dfas 1223434dfsdfadfa
dfas 1223