- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前有一个正在运行的链表结构,我需要找到一种方法让用户在该结构中搜索某个字段。我已经完成了,但问题是它必须是准确的。例如,如果用户输入“maggie”它会返回结果,但是如果用户输入“mag”它不会像我想要的那样返回maggie记录。
int counter = 0;
char search[MAX];
record_type *current = head;
printf("\n\n- - - > Search Records\n\n");
printf("\tSearch: ");
scanf("%s", search);
/* search till end of nodes */
while(current != (record_type*) NULL) {
if(strncmp(current->name, search, MAX) == 0) {
printf("\t%i. %s", counter, current->name);
printf("\t%u", current->telephone);
printf("\t%s\n", current->address);
counter++;
}
current = current->next;
}
有什么想法吗?我猜有一种方法可以与字符进行比较吗?谢谢!
最佳答案
你的问题不是很清楚...
如果只想返回完全匹配,请改用 strcmp
if (strcmp(current->name, search) == 0) {
如果您想返回部分匹配项,请使用 strncmp
但大小要超过您的搜索字符串:
if (strncmp(current->name, search, strlen(search)) == 0) {
关于C Strncmp 返回部分输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792533/
据我了解,strcmp()(无“n”)在任一参数中看到空字符后,立即停止处理并返回结果。 因此,如果已知 100% 确定其中一个参数以 null 结尾(例如,它是一个字符串文字),则使用 strncm
我找不到我的 parse() 函数中的问题。简短介绍:我从我的终端程序发送“boot\r\n”,调用了 parse() 函数,strncmp(buffer, "boot",4) 永远不会进入 if 分
我尝试创建我自己的学校项目所需的 strncmp 函数,我运行使用相同 srcmp 函数的代码,但提供了我想要比较的 ASCII 代码的限制大小: 编码: #include int strn
我在使用 strncmp 时遇到问题。据我了解,理论上,如果两个字符串比较的字符相等,strncmp 应该返回 0;但是,当我进行比较时,代码行为不当并产生误报(不等于字符,仍然会产生 if 子句)。
该程序应该允许用户输入一些名称(直到用户希望继续),然后按升序显示这些名称。我使用了 strncmp 函数来比较 char 数组。但是,当运行此命令时,只有已排序名称列表的第一个和最后一个名称作为输出
这段代码在“check_connected”过程中有一个奇怪的行为。使用strncmp函数之前将参数转换为char[30],如果不转换,结果是“堆栈溢出”。问题出现在两个字符串的比较结果中,“Le s
我有一个静态检查器,它提示在 if 条件下使用 strncmp,说 Logical operation performed on expression with possible side effec
我真的是 C 的新手,但我已经编写 C++ 有一段时间了。我正在写一个客户端服务器聊天程序。在用户输入用户名后,我需要在 session 开始时提示用户几个不同的选项。起初我试图使用 getchar(
我不知道如何在 C 中使用字符串: 这是我的服务器的一部分:中断永远不会被调用,即使我通过 telnet 提供了字符“/”。 理想情况下,这将通过将字符串 ch 一遍又一遍地添加到它来缓冲名为 get
在运行下面的代码时,我看到出现了 "x,y" 模式。此模式正在此处打印:printf("%s", start);。但是 if (strncmp(cp, VAL, strlen(VAL) == 0 ))
我一直在解决 strncmp 和 getline 的问题...所以我做了一个小测试应用程序。 strncmp 给出误报,我不知道我做错了什么。 这是程序 #include FILE *fp=NULL
我目前有一个正在运行的链表结构,我需要找到一种方法让用户在该结构中搜索某个字段。我已经完成了,但问题是它必须是准确的。例如,如果用户输入“maggie”它会返回结果,但是如果用户输入“mag”它不会像
这是快速背景:我有一个客户端程序和一个服务器程序,它们通过 Unix 套接字相互通信。在服务器端解析收到的消息时,我试图使用 strncmp 来确定要采取的操作。 我遇到的问题是弄清楚 strncmp
Fortify 表示这是越界读取: if (strncmp("test string", "less than 32 char", 32) == 0) { ... } 表示函数从小于32个字符的边界外
如果输入是 end,strncmp("end",input,3) == 0 不应该返回 0 吗?但它返回一个 > 0 的数字。 #include int main(void) { char *s
我正在尝试编写一个比较数字前两位数字的函数,并且由于 itoa 不可用,因此我使用之前通过谷歌搜索找到的 sprintf 首先将数字转换为字符串,然后比较每个数字。由于某种奇怪的原因,当我运行这个程序
在这个关于带有信号量的共享内存(生产者/消费者)的程序中(在 DEBIAN 上),当我使用带有字符串“end”的 strncmp 函数时,为了打开 0 标志(运行)来终止 while 循环, strn
我是 C 代码新手。对于此特定代码,如果用户输入名称 john, “john is Cool” 将被打印。我认为我没有正确使用 strncmp() 。有人可以帮忙吗? #include #inclu
在我输入10个名字后,我必须打印所有以A开头的名字。它不打印任何内容 #include #include #include void main(void) { int i; char
为了在我的代码中进行文件排序,我使用了 strncmp 来比较每个字符串的第一个元素。 在这里包括我的代码: 代码 1: for (i = 1; i < file_cnt; ) { if ((st
我是一名优秀的程序员,十分优秀!