1

定义:

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

变量:

  • workingDir是一个 C 字符串
  • myFilePath是一个 C 字符串

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

下面,myFilePathworkingDir +反斜杠+ 文字“myfile.txt”组成

在三元参数中,如果还没有反斜杠,我会尝试使用反斜杠。

    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");
4

1 回答 1

2

为什么不是这个?那么你就不用担心 '' 是否是 %c 的有效案例。而且 snprintf 需要处理的 varg 少了一个。

snprintf(myFilePath,
         sizeof(myFilePath),
         (lastChar == '\\') ? "%s%s" : "%s\\%s"
         workingDir,
         "myfile.txt");
于 2013-04-07T21:19:36.427 回答