printf中lc和c / ls与s之间的差异

时间:2016-06-02 09:26:45

标签: c printf stdio

printf()函数中lc(C)和c / ls(S)与s之间有什么区别?为什么ls(S)转换返回-1?

例如:

printf("%C", 'ͳʹ); // -1
printf("%c", 'ͳʹ); // PRINT
printf("%S", "ͳ ans T"); // -1
printf("%s", "ͳ and T"); // PRINT

在mac ..

1 个答案:

答案 0 :(得分:4)

从手册页:

  

l

     

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

所以改变是预期的类型:

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

来自-1的否定返回值(例如printf())表示发生了错误。由于您没有显示任何代码,因此很难进一步查明。