c - c中字符串数组的函数

标签 c arrays

这个函数停止了 awsering,我无法发现问题,有人可以尝试找到它吗? 它应该从字符串数组中为我提供设计的名称和编号。

#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;
}

最佳答案

当您将二维数组传递给 getNumber 函数时,您需要指定二维数组的大小。请参阅http://c-faq.com/aryptr/pass2dary.html了解详情。

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

将这些加上上面评论中提到的修复原型(prototype),得到:

#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;
}

关于c - c中字符串数组的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36877111/

相关文章:

c - 为什么打印 ch[1] 给出 2?

php - 如果未找到 array_search 查询

arrays - MATLAB:无法调用或索引临时数组

c - 将 C 变量链接到 Lua

c - 周边定义

c - 我是否正确理解 C 中的按值传递和按引用传递?

javascript - 多维数组引用问题

java - 如何创建一个循环将堆栈放入 string[] 中?

C 编程 If 语句不起作用

c - 将位从一个字节移到一个(数组)