由于某种原因,这不起作用。按照我的教科书,我很确定。
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);
}
答案 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() ) )
{ //.....
}
但是这里可能会发生缓冲区溢出。因此,只有事先知道字符串的大小才能使用它,以便不会发生溢出。