c中字符串数组的功能

时间:2016-04-26 22:43:37

标签: c arrays

这个功能停止了晃动,我无法发现问题,有人可以试着找到它吗? 它是为了给我一个字符串数组中的设计名称和数字。

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

int sameName();
char **getNumber();

char **getNumber (char *n[], char e[],int N){
    int a;
    for(a=0;a<N;a++){
        if (sameName(n[a],e))
        {
            return n[a];
        }
    }
    return "Not found!";
}

int sameName(char n[], char e[]){
    int a;
    for(a=0;e[a]!='\0';a++){
        if (n[a]!=e[a])
        {
            return 0;
        }
    }
    return 1;
}

int main (){
    char numbers [5] [100] ={{"Ash 031"},{"Bomberman 021"},{"Rango 120"},{"Gigo Senhas 017"},{"Marcoreano 135"}};
    char name [100];
    char a [100];
    scanf("%s",&a);
    strcpy(name,getNumber (numbers,a,5));
    printf("%s\n",name);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

当您将二维数组传递给getNumber函数时,需要对其进行细化。有关详细信息,请参阅http://c-faq.com/aryptr/pass2dary.html

对于scanf,您只需传递a,因为它是一个字符串。

如上面评论中所述,采取这些加上修复原型的方法,即:

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

int sameName(char n[], char e[]);
char *getNumber (char n[][100], char e[],int N);

char *getNumber (char n[][100], char e[],int N){
    int a;
    for(a=0;a<N;a++){
        if (sameName(n[a],e))
        {
            return n[a];
        }
    }
    return "Not found!";
}

int sameName(char n[], char e[]){
    int a;
    for(a=0;e[a]!='\0';a++){
        if (n[a]!=e[a])
        {
            return 0;
        }
    }
    return 1;
}

 int main (){
    char numbers [5] [100] ={{"Ash 031"},{"Bomberman 021"},{"Rango 120"},{"Gigo Senhas 017"},{"Marcoreano 135"}};
    char name [100];
    char a [100];
    scanf("%s",a);

    strcpy(name,getNumber (numbers,a,5));
    printf("%s\n",name);
    return 0;
}