Lilyanaa Ответов: 2

Поиск в массиве структуры в C


Я спрашиваю, как я могу искать по char, если он находится в массиве struct или нет .

Что я уже пробовал:

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

struct st info[InfoSize] = {{ "sl" },{"sos"},{"ss"}};

         
         char s = 'ss';


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

     if(info[j].name == s )
     printf("found  %s  ",info[j].name);

}

Richard MacCutchan

Это даже не будет компилироваться. Вы заявили: s как символ, а затем попытался поместить два символа в константу. А затем вы пытаетесь сравнить массив с символом. Вам нужно изучить основы обработки символов языка Си.

2 Ответов

Рейтинг:
2

Nakhia_ind

char[2] s = "ss";


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

   if(strcmp(info[j].name, s) == 0 )
   printf("found  %s  ",info[j].name);


jeron1

"s" должен иметь размер 3, чтобы учесть нулевой Терминатор.

Рейтинг:
1

KarstenK

это очень простой указатель арифметики:

struct st *pointer = &info[0];//getting pointer to address of first struct
char c = 'a';//search char
int pos = -1;//external scope of var
for( pos = 0; pos < 50/*size of name*/; pos++ ) {
 if( pointer->name[pos] == c )//check 
   break;
} 
Рассмотрим изучение языка Си с помощью некоторые учебные пособия.