我编辑了这个问题,因为解决方案没有按照预期的那样工作。是否有可能编写某种if语句或任何其他代码,当输入的字符串在该结构数组中不存在时打印出错误消息?在打印出错误消息后,它再次请求该字符串。我已经尝试了一段时间,似乎无法做到正确。
int ordet=0; char_sokafras[20];
printf("Name?\n");
scanf("%s", soka_fras);
while(ordet<*num_items)
{
if(strstr(varor[ordet].name, soka_fras))
{
printf("Name found!\n");
soka[hitta_tecken]=varor[ordet];
hitta_tecken+=1;
}
ordet+=1;
}
答案 0 :(得分:1)
strstr
返回指向haystack中子字符串开头的指针。从联机帮助页:
如果针是空字符串,则返回haystack;如果在haystack中无法发生针,则返回NULL;否则返回指向第一次出现针的第一个字符的指针。
修改while循环应该足够了:
while (strstr(varor[i].name, soka_fras) != NULL)