Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在数组的元素中搜索名称数组_Arrays_C - Fatal编程技术网

Arrays 如何在数组的元素中搜索名称数组

Arrays 如何在数组的元素中搜索名称数组,arrays,c,Arrays,C,我有这个任务/函数来确定记录中是否已经存在学生的姓名/全名。 每个输入/输入的学生姓名不应相同。记录中也没有重复条目 我的代码错误: 当我输入5个学生名字(例如:A、B、C、D、e)然后搜索D时,返回值将找不到。所以我想知道,如果每个元素都存在,它搜索每个元素的正确逻辑是什么?当我试着做一个测试时,它说“已经存在” #包括 #包括 int main(){ char studentNames[50][50],name[50][50]; int i,学生人数; printf(“\n输入学生人数:”)

我有这个任务/函数来确定记录中是否已经存在学生的姓名/全名。 每个输入/输入的学生姓名不应相同。记录中也没有重复条目

我的代码错误:

当我输入5个学生名字(例如:A、B、C、D、e)然后搜索D时,返回值将找不到。所以我想知道,如果每个元素都存在,它搜索每个元素的正确逻辑是什么?当我试着做一个测试时,它说“已经存在”

#包括
#包括
int main(){
char studentNames[50][50],name[50][50];
int i,学生人数;
printf(“\n输入学生人数:”);
scanf(“%d”和studentcount);

对于(int i=0;i您可能需要这样的内容:

char CompareStudent() {
  printf("\nEnter Student's Name to be search: ");
  char searchedname[100];
  scanf("%99s", searchedname);   // %99s instead of %s prevents buffer overflow
                                 // (not very important at your level)

  for (int i = 0; i < studentCount; i++) {
    if (strcmp(studentNames[i], searchedname) == 0) {
      printf("Already exists.\n");
      return 0;
    }
  }

  printf("Not found\n");
  return 1;
}
charcomparestudent(){
printf(“\n输入要搜索的学生姓名:”;
char searchedname[100];
scanf(“%99s”,searchedname);//%99s而不是%s可防止缓冲区溢出
//(在你的水平上不是很重要)
for(int i=0;i
这是带有注释的原始伪代码:

char CompareStudent() {
  printf("\nEnter Student's Name to be search: ");
  for (int i = 0; i < studentCount; i++) {
    scanf("%s", names[i]);                          // 1

    if (strcmp(studentNames[i], names[i]) == 0)
    {
      printf("Already exist.\n");
      return 0;
    }
    printf("Not found\n");                          // 2
    return 1;
  }
}
charcomparestudent(){
printf(“\n输入要搜索的学生姓名:”;
for(int i=0;i
问题:

  • 您只需要要求输入学生搜索一次,而不是每次在循环中
  • 此部分必须在循环之外。在您的代码中,如果学生不在数组的第一个元素中,我们将按条件返回1

  • 你可能想要这样的东西:

    char CompareStudent() {
      printf("\nEnter Student's Name to be search: ");
      char searchedname[100];
      scanf("%99s", searchedname);   // %99s instead of %s prevents buffer overflow
                                     // (not very important at your level)
    
      for (int i = 0; i < studentCount; i++) {
        if (strcmp(studentNames[i], searchedname) == 0) {
          printf("Already exists.\n");
          return 0;
        }
      }
    
      printf("Not found\n");
      return 1;
    }
    
    charcomparestudent(){
    printf(“\n输入要搜索的学生姓名:”;
    char searchedname[100];
    scanf(“%99s”,searchedname);//%99s而不是%s可防止缓冲区溢出
    //(在你的水平上不是很重要)
    for(int i=0;i
    这是带有注释的原始伪代码:

    char CompareStudent() {
      printf("\nEnter Student's Name to be search: ");
      for (int i = 0; i < studentCount; i++) {
        scanf("%s", names[i]);                          // 1
    
        if (strcmp(studentNames[i], names[i]) == 0)
        {
          printf("Already exist.\n");
          return 0;
        }
        printf("Not found\n");                          // 2
        return 1;
      }
    }
    
    charcomparestudent(){
    printf(“\n输入要搜索的学生姓名:”;
    for(int i=0;i
    问题:

  • 您只需要要求输入学生搜索一次,而不是每次在循环中
  • 此部分必须在循环之外。在您的代码中,如果学生不在数组的第一个元素中,我们将按条件返回1

  • 为了查找数组中是否存在元素,需要检查所有元素,直到找到该元素(或到达数组末尾)。您的代码仅比较两者中的单个元素arrays@UnholySheep这是一个类似线性搜索的算法吗?对不起,我真的是一个新手。请展示一下。不清楚变量是如何定义的。我看不出
    名称
    是一个数组(字符串)的任何原因-它只是一个查询,应该是单个临时字符串。逻辑很简单:1)读取查询(在循环之外)。2)迭代现有名称,将每个名称与查询进行比较。为了查找数组中是否存在元素,您需要检查所有元素,直到找到该元素(或到达数组末尾)。您的代码仅比较两者中的单个元素arrays@UnholySheep这是一个类似线性搜索的算法吗?对不起,我真的是一个新手。请展示一下。不清楚变量是如何定义的。我看不出
    名称
    是一个数组(字符串)的任何原因-它只是一个查询,应该是单个临时字符串。逻辑很简单:1)读取查询(在循环之外).2)迭代现有名称,将每个名称与查询进行比较。解释原始代码中的错误以及这些更改将使此答案对此人更有用asking@ChatterOne说明已添加到meantime@Jabberwocky我明白了,谢谢你先生的精彩回答。我明白我的错误所在。我真的很抱歉如果我把它放在循环中,它每次都会迭代,这就是为什么我真的需要深入了解数组和函数是如何工作的。@DrewD指令是按顺序执行的。@Jabberwocky先生,你还在吗?关于这个主题,我也有新的问题,可能是一个调整。是否可以使用compareStudent函数来检查整个数组e数组或在初始化学生姓名(如果存在)之前。然后,如果我没有将其插入学生姓名数组中,请解释原始代码中的错误以及这些更改将使此答案对用户更有用asking@ChatterOne说明已添加到meantime@Jabberwocky我明白了,谢谢你,先生derful回答。我知道我的错误在哪里了。我真的认为,如果我把它放在循环中,它每次都会迭代,这就是为什么我真的需要深入了解数组和函数是如何工作的。@DrewD指令是按顺序执行的。@Jabberwocky先生,你还在吗?关于这个主题,我也有新的问题,也许是个调整。可能吗e使用compareStudent函数检查整个数组,或者在初始化students名称(如果存在)之前检查。然后如果我没有将它们插入studentsName数组中?