C sprintf(目标,源)与sprintf(目标,源)有不同的行为;
在特定PlayStation平台附带的C/C++编译器上,我对非标准ASCII字符(在西班牙语等翻译语言中使用)感到有些麻烦——严重、尖锐,诸如此类 如果我使用C sprintf(目标,源)与sprintf(目标,源)有不同的行为;,c,printf,C,Printf,在特定PlayStation平台附带的C/C++编译器上,我对非标准ASCII字符(在西班牙语等翻译语言中使用)感到有些麻烦——严重、尖锐,诸如此类 如果我使用 sprintf( target_string, string_table[N] ); sprintf( target_string, "%s", string_table[N] ); 如果源字符串包含ascii值高于127的字符(即在有符号字符中低于0),则复制的字符串包括非标准ascii字符,但不包括字符串中的更多字符。第一个
sprintf( target_string, string_table[N] );
sprintf( target_string, "%s", string_table[N] );
如果源字符串包含ascii值高于127的字符(即在有符号字符中低于0),则复制的字符串包括非标准ascii字符,但不包括字符串中的更多字符。第一个带重音的欧洲字符是sprintf语句放弃的地方,好像比较是if(charif调用
sprintf( target_string, string_table[N] );
然后string_table[N]将被解释为“格式字符串”(如果其中有“%”,应用程序将可怕地死掉。不要这样做)
奇怪的字符问题是关于utf-8的,您应该使用swprintf和其他wprintf-s编译器不会发出警告,因为它无法知道
字符串\u表[N]
不是有效的格式字符串。你完全正确-我没有意识到格式字符串不需要是字符串文字,也不需要最后一个参数,因为格式字符串本身可以是有效字符串,就像printf一样。谢谢!啊!我明白了-现在有意义了。Th第二个字符串实际上变成了格式字符串,而第三个参数(不存在)不是必需的参数。明白了-非常感谢!由于Sony呼叫的性质,不使用swprintf,因此数据最终将进入-如果支持存在,将是首选选项
sprintf( target_string, string_table[N] );