Q: Сравните поля (Libfdr) и массив в C - PullRequest
0 голосов
/ 22 апреля 2020

Во-первых, я новичок. Извините, если это очень простой вопрос. Я хочу проверить некоторые функции в файле c, предоставленном пользователем, и распечатать их.

Ввод пользователя в Linux: $ ./question2 -s pro1.c

И печать терминала: Counter: 0

Этот код не может сравниваться.

int main(int argc, char *argv[2])
{
   parameter = malloc(sizeof(char) * 2);
   if (argc >= 2)
   {
       parameter = argv[1];
       IS is; // #include "fields.h"
       char *functions[5] = {"strcat", "strcpy", "sprintf", "gets", "getpw"};
       is = new_inputstruct(argv[2]);
       int i, counter;

       while (get_line(is) >= 0)
       {
           //printf("%s\n", *is->fields);
           for (i = 0; is->fields[i] != NULL; i++)
           {
               if (strcmp(is->fields[i], "strcpy") == 0) // if true
               {
                   printf("%s\n", is->fields[i]);
                   counter++;
               }
           }
       }
       printf("Counter: %d\n", counter);

1 Ответ

1 голос
/ 22 апреля 2020

Вы можете использовать строку сравнения 2 с функцией strstr.

if(strstr(is->fields[i],"strcpy")){
   printf("%s\n", is->fields[i]);
   counter++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...