簡體   English   中英

在C中的字符串char數組中搜索字符串

[英]Searching for string in char array of strings in C

char names [MAX_CLASS_SIZE][MAX_NAME_SIZE+1]={"Julias Hoffman","Dianne Conner","Mitchell Cooper","Johnnie Greene","Johanna Mason","Kevin Adkins","Brandi Spencer","Marian Tyler","Chester Cross","Martin Lawrence","Jane Smith","Sara Jones"};

char specificName[]="";

int search(char names[][MAX_NAME_SIZE+1],char specificName[])

for(i=0;i<MAX_CLASS_SIZE;i++){
    if (strcmp(names[i],specificName)==0)
    {
        printf("Found %s",names[i]);
        return i;
    }
}

此函數接收一個稱為名稱的字符串數組和一個代表特定名稱的字符數組。 此函數在數組名稱中搜索特定名稱,如果找到,則返回該特定名稱的索引;如果找不到,則返回-1。

無法讓陣列正確格式化我的歉意。 在主要方面,我要求用戶輸入名稱並將其存儲在specificName char數組中。 然后在搜索功能中,我嘗試搜索給定名稱的用戶的名稱數組,並根據是否找到該名稱返回某個值。 我已經包括了必要的庫。 我正在嘗試使用strcmp來執行此操作,但是它似乎無法正常工作。 任何幫助是極大的贊賞!

快速瀏覽一下,它似乎工作正常。 您需要將i聲明為int,否則,可以進行以下工作:

#include <stdio.h>
#include <stdlib.h>

#define MAX_CLASS_SIZE 100
#define MAX_NAME_SIZE 100

int strcmp(const char *, const char *);
int main(int argc, const char * argv[]) {

    char names [MAX_CLASS_SIZE][MAX_NAME_SIZE+1]={"Julias Hoffman","Dianne Conner","Mitchell Cooper","Johnnie Greene","Johanna Mason","Kevin Adkins","Brandi Spencer","Marian Tyler","Chester Cross","Martin Lawrence","Jane Smith","Sara Jones"};
    char specificName[]="Brandi Spencer";
    int search(char names[][MAX_NAME_SIZE+1],char specificName[]);
    for(int i=0;i<MAX_CLASS_SIZE;i++){
        if (strcmp(names[i],specificName)==0){
            printf("Found %s",names[i]);
            return i;
        }
    }

    return 0;
}

輸出量

發現布蘭迪·斯賓塞

我的猜測是您沒有正確傳遞用戶輸入。 在strcmp()之前檢查specificName []。

您可以嘗試以下方法:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

int search(char **names,char *specificName, size_t length){
    size_t i,found=0;
    for(i=0;i<length;i++){
        if (strcmp(*(names + i),specificName)==0){
            found = 1;
        }
    }
    return found == 1 ? 0 : 1;
}


int main(void) {
    size_t length;
    char specificName[100];
    char *names[12]={"Julias Hoffman","Dianne Conner","Mitchell Cooper","Johnnie Greene",
                     "Johanna Mason","Kevin Adkins","Brandi Spencer","Marian Tyler",
                     "Chester Cross","Martin Lawrence","Jane Smith","Sara Jones"};

    length = sizeof names / sizeof *(names + 0);

    printf("Type a name to be searched:> ");
    if( fgets (specificName, 100, stdin) == NULL){
        printf("Error!\n");
    }

    specificName[strcspn(specificName, "\n")] = 0;

    if((search(names,specificName,length)) == 0){
        printf("Found %s",specificName);
    }else{
        printf("There was no Record Found.\n");
    }
    return 0;
}

輸出:

Type a name to be searched:> Sara Jones
Found Sara Jones

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM