在C中搜索结构数组[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C中搜索结构数组[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

如何搜索在结构数组中随机生成的char。如果找到char,则该函数必须返回struct数组中的info[i].num,其中info是结构数组(参见下面的代码)。

我在gcc得到了错误

 warning: comparison between pointer and integer
 if(info[j].name == s );

我怎样才能使用正确的比较?

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define InfoSize  3 

int main(int argc, char *argv[]) 
{  
char arr[20];
struct st
{    
    char name[20];  
    int num[5];   
}; 

struct st info[InfoSize] = {{ "some10",6 },{"some50",8},{"some5",4}};

         int r = rand() % (50 + 1 - 10) + 10 ;
         char s = sprintf( arr, "some%d", r );


  for(int j=0;j<3;j++){

     if(info[j].name == s )
     printf("found  %s  and it's num =%d",info[j].name,info[j].num);

}
答案

以下提议的代码:

  1. 干净利落地编译
  2. 将大部分意见纳入该问题
  3. 执行所需的功能
  4. 记录为什么包含每个头文件
  5. 代码可能无法在strut数组中找到匹配的条目,因为arr[]内容的生成可能是10到50之间的任何值,因此永远不会导致在字符串中附加5:some。并且不太可能追加10或50。

而现在提出的代码

#include <stdio.h>    // printf(), sprintf()
#include <stdlib.h>   // rand(), srand()
#include <string.h>   // strcmp()
#include <time.h>     // time()


#define INFO_SIZE   3
#define MAX_ARR_LEN 20

int main( void )
{
    char arr[ MAX_ARR_LEN +1 ];

    struct st
    {
        char name[20+1];  // +1 to allow for trailing NUL byte
        int num;
    };

    struct st info[ INFO_SIZE ] =
    {
        { "some10",6 },
        { "some50",8 },
        { "some5",4  }
    };

    srand( (unsigned int)time( NULL ) );
    int r = (rand() % 41) + 10 ;
    sprintf( arr, "some%d", r );


    for(int j=0; j<INFO_SIZE; j++ )
    {
         if( strcmp( info[j].name, arr )  == 0 )
         {
             printf("found  %s  and it's num =%d",info[j].name,info[j].num);
         }
    }
}
另一答案

你的程序缺少很多东西。第一项业务是你需要为rand函数设置种子以获得伪随机数。

你得到的警告(不是错误,至少在我的编译器上)告诉你要将指针与整数进行比较,因为c中的数组实际上是普通的旧指针。

char s = sprintf( arr, "some%d", r );

根据qazxsw poi printf将输出发送到你的arr变量并根据操作的成功返回一个值,所以下面的代码:

https://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm

应该写成

if(info[j].name == s )

我建议你尝试掌握C的核心概念,因为它对你未来的编程生活有很大的帮助,即使你再也不用C了。

以上是关于在C中搜索结构数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C中结构数组的数组[重复]

iphone / Objective c的最佳代码片段网站是啥[重复]

在C中为结构中的单个字符分配内存[重复]

在数组中搜索重复值

P /在结构中调用定义长度的C char *数组[重复]

如何在 Jquery 中搜索数组,如 SQL LIKE value% 语句 [重复]