【问题标题】:fprintf with string argument带字符串参数的 fprintf
【发布时间】:2010-01-07 06:56:12
【问题描述】:

为了创建格式化文件,我想使用fprintf。它必须得到char* 参数,但我有几个字符串变量。如何使用fprintf

【问题讨论】:

  • 您能否发布一些示例代码,向我们展示输入是什么以及预期的输出是什么?
  • 我有这样的东西: ... string St1, St2; ... ifstream In("Text.txt");在 >> St1 >> St2; ...通过 ifstream() 函数从文件中读取来初始化 St1 和 St2。现在我想通过 fprintf() 函数将它们写入另一个文件。 fprintf("%s %s", St1, St2);但我认为 fprint 得到 char* 而不是字符串。
  • fprintf 的第一个参数应该是 FILE*,而不是 char *。在 C 中没有“字符串”,只有“字符 *”。你确定你不是想用“c++”而不是“c”来标记这个问题吗?

标签: c string printf


【解决方案1】:

fprintf 与字符串的基本用法如下所示:

char *str1, *str2, *str3;
FILE *f;
// ...

f = fopen("abc.txt", "w");
fprintf(f, "%s, %s\n", str1, str2);
fprintf(f, "more: %s\n", str3);
fclose(f);

您可以使用多个%s 格式说明符添加多个字符串,并且可以使用对fprintf 的重复调用来增量写入文件。

如果你有 C++ std::string 对象,你可以使用它们的 c_str() 方法来获得适合与 fprintf 一起使用的 const char*

std::string str("abc");
fprintf(f, "%s\n", str.c_str());

【讨论】:

    【解决方案2】:

    具有多个字符串的 fprintf 非常简单,如果这是您所追求的,例如

    const char* charString1 = "This";
    const char* charString2 = "is a";
    const char* charString3 = "test";
    
    fprintf(fileHandle, "%s, %s, %s", charString1, charString2, charString3);
    

    【讨论】:

    • 我有这样的东西: ... string St1, St2; ... ifstream In("Text.txt");在 >> St1 >> St2; ...通过 ifstream() 函数从文件中读取来初始化 St1 和 St2。现在我想通过 fprintf() 函数将它们写入另一个文件。 fprintf("%s %s", St1, St2);但我认为 fprint 得到 char* 而不是字符串。
    【解决方案3】:

    fprintf 的工作方式类似于 printf,在格式说明符中,您可以根据需要提及任意数量的 %s 并给出相应数量的字符串参数。如果您需要更详细的答案,请发布您的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 2019-11-23
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多