Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C sprintf(目标,源)与sprintf(目标,源)有不同的行为;_C_Printf - Fatal编程技术网

C sprintf(目标,源)与sprintf(目标,源)有不同的行为;

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字符,但不包括字符串中的更多字符。第一个

在特定PlayStation平台附带的C/C++编译器上,我对非标准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] );