用C语言写输入n,根据n的大小输入n个字符串,然后输入待查找的字符串,若存在,则输出“查找成功”,否则输出“查找失败”。 输入示例: 3 aaa bbb ccc bbb 输出示例: 查找成功
时间: 2025-06-28 21:17:05 浏览: 14
### 实现动态输入N个字符串并在其中查找指定字符串
为了满足需求,可以设计一个完整的C语言程序来实现这一功能。此程序会先让用户输入要处理的字符串总数`n`,之后依次接收这`n`个字符串,最后提供一个目标字符串用于在已录入的数据集中进行匹配查找。
#### 主要逻辑结构描述
- 使用循环读取用户自定义数量的字符串,并存储在一个二维字符数组中。
- 提供接口让使用者能够输入想要查询的目标字符串。
- 编写专门的函数负责遍历之前保存下来的各个字符串并与目标做对比判断是否存在相等的情况;如果找到,则返回对应的索引位置;反之则给出未发现的信息提示[^1]。
下面是具体的代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STRING_LENGTH 5 // 定义单个字符串的最大长度加终止符'\0'
#define STRING_COUNT_LIMIT 100 // 设定最多能接受多少条记录
// 查找函数声明
void find(const char *names[], const char* target, int count);
int main(void){
char name[STRING_COUNT_LIMIT][MAX_STRING_LENGTH];
char *namePtrs[STRING_COUNT_LIMIT]; // 存储指向各字符串首地址的指针集合
int n;
printf("请输入字符串的数量(n): ");
scanf("%d", &n);
getchar(); // 吃掉回车键
for(int i = 0; i < n && i < STRING_COUNT_LIMIT ; ++i){
fgets(name[i], sizeof(name[i]), stdin);
size_t length = strcspn(name[i], "\n");
if(length > 0){ // 去除可能存在的换行符
name[i][length]='\0';
}
namePtrs[i]=&name[i][0];
if(strcmp(name[i],"*****")==0) break;// 遇到结束标志提前退出收集过程
}
char target[MAX_STRING_LENGTH]="";
printf("请输入您要查找的目标字符串:");
fgets(target,sizeof(target),stdin);
size_t len=strcspn(target,"\n");
if(len>0){
target[len]='\0'; // 清理多余的新行符号
}
find((const char **)namePtrs,target,n);
}
// 查找函数定义
void find(const char *names[], const char* target,int count){
for(int i=0;i<count;++i){
if(names[i]!=NULL&&strcmp(names[i],target)==0){
printf("找到了! '%s' 是第 %d 条数据。\n",target,i+1);
return ;
}
}
printf("很遗憾,在列表里找不到'%s'.\n",target);
}
```
上述代码实现了从标准输入获取一系列短字符串并将它们存入预分配的空间内,接着允许用户指定一个特定模式去检索这些已经加载好的项目。一旦检测到了完全一致的结果就会立即反馈给调用者它的确切序号(基于人的习惯是从1开始计数)。如果没有命中任何项也会友好地告知对方。
阅读全文
相关推荐















