如何搜索在结构数组中随机生成的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);
}
答案 0 :(得分:1)
以下提议的代码:
arr[]
内容的生成可能是10到50之间的任何值,因此永远不会在字符串中附加5:{ {1}}。并且不太可能追加10或50。现在提出的代码
some
答案 1 :(得分:-1)
你的程序缺少很多东西。 第一项业务是你需要为rand函数设置种子以获得伪随机数。
你得到的警告(不是错误,至少在我的编译器上)告诉你要将指针与整数进行比较,因为c中的数组实际上是普通的旧指针。
char s = sprintf( arr, "some%d", r );
根据https://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm sprintf将输出发送到您的arr变量,并根据操作的成功重新计算一个值,所以代码如下:
if(info[j].name == s )
应该写成
if(strcmp(info[j].name,arr)==0)
我建议你尝试掌握C的核心概念,因为它对你未来的编程生活有很大的帮助,即使你再也不用C了。