c - 如何获取与正在搜索的项目匹配的所有 itams
问题描述
功能:
Option2(char Firstname[][20],char search[],int size)
{
int i;
for(i=0;i<=size;i++)
{
if(strcmp(Firstname[i],search)==0)
{
return i;
}
}
return -1;
}
该函数应该将搜索与数组上的每个项目进行比较,并返回与搜索匹配的所有项目
主要的:
case 2:
printf("\nEnter a first name to search: ");
scanf("%s",Nsearch);
temp = Option2(Firstname,Nsearch,size);
if(temp!=-1)
{
printf("First Name:%s Last Name:%s Score: %.2f\n",Firstname[temp],Lastname[temp],score[temp]);
}
break;
如何打印出与搜索匹配的所有项目,而不仅仅是与搜索匹配的第一个项目?
解决方案
对于初学者来说,函数似乎在循环条件中有一个错误
for(i=0;i<=size;i++)
它应该是
for(i=0; i < size;i++)
您可以像这样在循环中调用函数
temp = 0;
int i = 0'
while ( ( temp = Option2(Firstname + i,Nsearch, size - i) ) != - 1 )
{
i += temp;
printf("First Name:%s Last Name:%s Score: %.2f\n",Firstname[i],Lastname[i],score[i]);
++i;
}
这是一个演示程序,展示了如何使用循环来输出数组中的元素。
#include <stdio.h>
#include <string.h>
#define N 20
int Option2( char Firstname[][N], char search[], int size )
{
int i = 0;
while ( i < size && strcmp( Firstname[i], search ) != 0 ) i++;
return i == size ? -1 : i;
}
int main(void)
{
char names[][N] = { "chanu", "bob", "chanu" };
const int M = ( int )( sizeof( names ) / sizeof( *names ) );
char s[] = "chanu";
int i = 0, j = 0;
while ( ( j = Option2( names + i, s, M - i ) ) != -1 )
{
i += j;
printf( "%d: \"%s\"\n", i, names[i] );
++i;
}
putchar( '\n' );
for ( int i = 0, j = 0; ( j = Option2( names + i, s, M - i ) ) != -1; i++ )
{
i += j;
printf( "%d: \"%s\"\n", i, names[i] );
}
return 0;
}
程序输出为
0: "chanu"
2: "chanu"
0: "chanu"
2: "chanu
推荐阅读
- gradle - 任务参数
- anylogic - 如何在 Collection anylogic 中创建多维数组?
- python-3.x - 向 Pandas 多索引添加行
- arrays - vuejs2 - 如何在动态创建的行上保持选中的收音机
- windows - 从文件中的所有行创建字符串并存储在变量中
- python - 在我的代码中避免多个(非嵌套)if 语句
- ruby - 黄瓜场景大纲中的换行符导致错误
- mongodb - 如何遍历 mongo 集合并更新字符串字段中的字符串?
- python - 如何将 Pandas 数据框的字符串类型的一列溢出到 int 类型的几列中
- php - Web 服务器无法在 Docker-Symfony 项目上启动