我有一个解析配置文件的C程序.配置文件允许格式化一些wildchars
option=%any.
问题是,当我使用strcmp比较值时,我得到一个非法的指令错误.
示例程序来说明这一点:
char str1[10];
sprintf(str1,"%any");
if(strcmp(str1,"%any") == 0)
printf("match\n");
return 0;
Run Code Online (Sandbox Code Playgroud)
输出:
$ ./a.out
Illegal instruction
Run Code Online (Sandbox Code Playgroud)
printf也会抛出此错误.
使用printf("%s \n",str1);
输出是:
$ ./a.out
0x0.07fff00000001p-1022ny
Illegal instruction
Run Code Online (Sandbox Code Playgroud)
我尝试转义,即在sprintf中使用"\%any"而不是"%any"; 但这没有用.
在C++中,使用std :: string ==比较,使用cout打印似乎工作正常.
有人可以帮助我找出如何用C做到这一点.
它来自sprintf.
#include <stdio.h>
sprintf(str1, "%%any");
Run Code Online (Sandbox Code Playgroud)
正如Paul R.所说,你可以使用而strcpy不用担心这些格式.
| 归档时间: |
|
| 查看次数: |
1779 次 |
| 最近记录: |