2013-05-21 78 views
1

我有一些C代码从STDIN中读入一个HTML表单的内容,并在此刻记字符串。忽略某些字符串

fgets(formip, 1024, stdin); 

pch = strtok (formip,"=&"); 
while (pch != NULL) 
{ 
    printf ("%s\n",pch); 
    pch = strtok (NULL, "=&"); 
    printf ("<br>\n"); 
} 

这将产生输出这样的:

checkbox,checked,value,2 
checkbox,checked,value,3 

有谁知道我这怎么能扩展到不写了“复选框”或“值”的字符串?

回答

1

您可以使用strcmp来检查字符串是否相等,不跳过重要的是下一个打电话给strtok否则你将在一个无限循环结束:

while (pch != NULL ) 
{ 
    if(strcmp(pch, "value") != 0 && strcmp(pch, "checkbox") != 0) 
    { 
     printf ("%s\n",pch); 
     printf ("<br>\n"); 
    } 
    pch = strtok (NULL, "=&"); 
} 
+0

谢谢Shafik!这很好用! –

1

您需要添加一些代码进行比较,并在打印前跳过那些不需要的字符串:

while(pch != NULL) 
{ 
    if(strcmp(pch, "checkbox") == 0 || strcmp(pch, "value") == 0) 
    continue; 
} 
+0

如果这是在循环的顶部做,你跳过一次调用'strtok'你将有一个无限循环。 –