如何在C语言中使用scanf和printf作为字符串

时间:2018-02-12 12:41:34

标签: c c++11

我不想声明字符数组。我想声明字符串。并使用scanf和printf获取输入并显示该字符串的输出。我试图这样做,如下所示,但它没有正常工作。如何正确地做到这一点?

#include<bits/stdc++.h>
using namespace std;

int main()
{
    string str;

    scanf("%s", str.c_str());
    printf("%s", str.c_str());

    return 0;
}

When I take input using this code, output shows like this

1 个答案:

答案 0 :(得分:0)

您正试图在只读的区域中书写,例如str.c_str()。 你想做的是:

 std::cin >> str;

或者如果由于特定原因您必须使用scanf。从C ++ 17开始,您可以这样做:

  str.data()

返回可修改的内存区域。

编辑:正如@nwp所说,你必须调用str.resize(size),因为在此之前字符串的大小是0。