c/c++ 如何输入带空格的字符串

版权声明:本文为博主原创文章,未经博主允许不得转载。 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语言会自动截断输入的空格

问题

  1. 输入字符串有空格,无法处理
  2. 输入字符串长度超过字符数组长度,不安全

改进

#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

猜你喜欢

转载自blog.csdn.net/sty945/article/details/82560066
今日推荐