gpt4 book ai didi

c - 在 C 中的结构数组中搜索

转载 作者:行者123 更新时间:2023-11-30 21:38:44 27 4
gpt4 key购买 nike

如何搜索结构数组中随机生成的字符。如果找到 char,该函数必须返回 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);
}
}
}

关于c - 在 C 中的结构数组中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47971053/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com