我正在使用以下代码将gchar
中的字符串存储与从文件中读取的char
数组进行比较:
while (fgets(line, sizeof line, config) != NULL)
{
printf("line content is %s",line+5);
printf("size of comparison: %i\n",g_utf8_strlen(active_selection,-1));
if (g_ascii_strncasecmp(line+5,active_selection,g_utf8_strlen(active_selection,-1)+1)==1)
{
printf("success \n\n");
}
else
printf("failure\n");
}
配置文件值为:
set "hello"
button "hello" "some text"
button "phone" "more text"
set "pmrs"
button "test" "test even more text"
printf()
显示以下值:
line+5
=你好“line+5
(第二次迭代)= on“hello”
active_selection
=你好g_utf8_strlen(active_selection,-1)
= 5
我所期待的是第一次迭代(hello"
)会返回true
第二个会返回false
(在"hello"
上),
只考虑前5个字符进行比较。
显然事实并非如此,因为我总是执行else
语句(我使用printf
来测试)。
答案 0 :(得分:1)
所有字符串比较函数在匹配时返回0
。因此,您的if
条件应检查0
而不是1
。
返回
如果字符串匹配则为0,如果s1<则为负值。 s2,或者是积极的 值s1> s2。