Передача String Pointer Array в C - PullRequest
0 голосов
/ 04 июня 2018

У меня есть простая функция C, которую я хотел бы передать массив указателей на различные строки.У меня проблемы с лаем компилятора в параметрах вызова моей функции.Вот простое представление о том, что я делаю,

myfunction.h

int myServices(int, char *[]);

myfunction.c

#include <myfunction.h>
int myService(int value, char *strpointer[]) {

   ***

}

mainroutine.c

#include <myfuntion.h>
void main () {

   // Initialize Parameters
   int result;
   int stringcnt;
   char string1[8] = "-st";
   char string2[8] = "-ir";
   char * stringptr[10];

   // Initialize stringptr
   stringptr[0] = string1;
   stringptr[1] = string2;
   stringcnt = 2;

   // Call Service
   result = myService(stringcnt, stringptr); <== gcc issue with stringptr

}

Компилятор C продолжает давать мне "недопустимое использование члена (вы забыли '&'?" С stringptr в вызове myService.Я попытался '&' и '*' с stringptr в вызове myService в основной процедуре без удачи. Любые идеи.

1 Ответ

0 голосов
/ 04 июня 2018

Я запустил ваш код и заметил несколько вещей: во-первых, в вашем заголовочном файле вы не определили аргументы должным образом (случай пропущенной комы), а также ваша основная точка входа не имела правильного типа возврата (не должно быть int), ни аргументов (int argc, char * argv []).Я внес изменения и прикрепил их ниже:

 // func.h

int myService(int, char*[]);

Затем код функции:

// func.c

#include "func.h"

int myService(int value, char *strpointer[]) {
        // your code here
        return 0;
}



// prog.c

-

#include "func.h"

int main (int argc, char *argv[]) {

   // Initialize Parameters
   int result;
   int stringcnt;
   char string1[8] = "-st";
   char string2[8] = "-ir";
   char * stringptr[10];

   // Initialize stringptr
   stringptr[0] = string1;
   stringptr[1] = string2;
   stringcnt = 2;

   // Call Service
   result = myService(stringcnt, stringptr);
   return 0;
}

Я скомпилировал это с помощью командыgcc -o prog.o prog.c func.c без ошибок и плавного выполнения.Надеюсь, что это работает для вас

...