这种尝试写入文件的错误是什么?C ++

时间:2016-11-05 02:02:36

标签: c++

由于某种原因,这不起作用。按照我的教科书,我很确定。

void write(string s) {
    cout << "\ntype filename";
    string filename;
    scanf("%s", &filename);
    FILE *outfpt; //new file  
    outfpt = fopen(filename.c_str(), "w");
    printf("Address of file is %p\n", outfpt);

    fprintf(outfpt, "%s", s.c_str());
    fclose(outfpt);

}

2 个答案:

答案 0 :(得分:2)

scanf("%s", &filename);出了什么问题。 scanf及其亲属只能用于内置类型(std::string,尽管是标准的,但不像int那样内置。

如果您想接受一个简单的字符串作为输入,请尝试cin >> filename;

答案 1 :(得分:0)

与其他人一样,您应该使用cin作为输入。但是,如果您必须使用scanf,则可以将结果从scanf存储到std::string

std::string filename(100, '  ');
 If (1  == scan("℅*s", &filename[0], filename.size() ) ) 
   { //.....
    }

但是这里可能会发生缓冲区溢出。因此,只有事先知道字符串的大小才能使用它,以便不会发生溢出。