将空字符插入snprintf

时间:2013-04-07 21:07:24

标签: c ternary-operator

定义:

  • CHAR_BACKSLASH 定义为'\\'或0x5C

变量:

  • workingDir 是一个C-String
  • myFilePath 是一个C-String

    int len = strlen(workingDir);
    char lastChar = workingDir[len - 1];
    

下面, myFilePath workingDir + 反斜杠 +文字“myfile.txt” <组成/ p>

在三元论证中,如果没有反斜杠,我试图反斜杠。

    snprintf(myFilePath,
             sizeof(myFilePath),
             "%s%s%s",
             workingDir,
             (lastChar == CHAR_BACKSLASH) ? "" : "\\",
             "myfile.txt");

如果可能的话,我想把它改成这样的东西,但不知道如何,因为它需要一个空的单引号字符,而且我不确定是否允许这样做。

    snprintf(myFilePath,
             sizeof(myFilePath),
             "%s%c%s",
             workingDir,
             (lastChar == CHAR_BACKSLASH) ? '' : CHAR_BACKSLASH,
             "myfile.txt");

1 个答案:

答案 0 :(得分:2)

为什么不呢?那么你不必担心''是否是%c的有效案例。并且snprintf只需要少量varg来处理。

snprintf(myFilePath,
         sizeof(myFilePath),
         (lastChar == '\\') ? "%s%s" : "%s\\%s"
         workingDir,
         "myfile.txt");