printf中lc和c/ls和s的区别

pot*_*heo 0 c printf stdio

lc (C) 和 c / ls (S) 和 s 在printf()功能上有什么区别?为什么ls(S)转换返回-1?

例子:

printf("%C", '??); // -1
printf("%c", '??); // PRINT
printf("%S", "? ans T"); // -1
printf("%s", "? and T"); // PRINT
Run Code Online (Sandbox Code Playgroud)

在 Mac..

unw*_*ind 5

从手册页:

l

(ell) [...] 或后续c转换对应于wint_t参数,或后续s转换对应于指向wchar_t参数的指针。

所以变化是预期的类型:

  • %c-int内部转换为unsigned char
  • %lc —— wint_t
  • %s - 指向以零结尾的数组的指针 char
  • %ls - 指向以零结尾的数组的指针 wchar_t

负返回值,例如-1, fromprintf()表示发生了错误。由于您没有显示任何代码,因此很难进一步确定。