Если я понимаю, вы хотите получить переменную, используя функцию get_char_array.Тогда Если я понимаю, вам нужно сделать следующее (измените функцию get_char_function, чтобы получить указатель на указатель на символ):
// stringcontent.h
char content1[] = "blahblah";
void get_char_array(int which,char **buffer){
if(which == 1)
*buffer = content1;
printf("%s",*buffer); // prints : "blahblah"
// and so on.....
}
// test.c
#include "stringcontent.h"
main(){
char *buf;
get_char_array(1,&buf);
printf("%s",buf); // prints "blahblah" !!!
}
РЕДАКТИРОВАТЬ:
Положите объявления в заголовочном файле и реализация в ".c", иначе у вас будут ошибки компоновщика.
// stringcontent.h
#ifndef __STRINGCONTENT_H
# define __STRINGCONTENT_H
void get_char_array(int which,char **buffer);
#endif
// stringcontent.c
char content1[] = "blahblah";
void get_char_array(int which,char **buffer){
if(which == 1)
*buffer = content1;
printf("%s",*buffer); // prints : "blahblah"
// and so on.....
}
// test.c
#include "stringcontent.h"
main(){
char *buf;
get_char_array(1,&buf);
printf("%s",buf); // prints "blahblah" !!!
}
Для компиляции (если используется gcc):
gcc -Wall test.c stringcontent.c -o test
Обратите внимание, что вам не нужно "экспортировать" content1
, так как единственное, что вам нужно, указатель, возвращается функцией.
Вот еще одно решениеиспользуя strcpy.В этом случае вам не нужно передавать указатель на указатель.
// stringcontent.h
char content1[] = "blahblah";
void get_char_array(int which,char *buffer){
if(which == 1)
strcpy(buffer,content1);
printf("%s",buffer); // prints : "blahblah"
// and so on.....
}
// test.c
#include "stringcontent.h"
#define GOOD_SIZE (100)
main(){
char buf[GOOD_SIZE];
get_char_array(1,buf);
printf("%s",buf); // prints "blahblah" !!!
}
В этом случае вы должны позаботиться о том, чтобы выделить достаточный размер в buf перед вызовом get_char_array.
Iпредпочитаю первое решение, ему не нужно использовать strcpy.И если вы не выделите достаточно места в буфере, у вас могут возникнуть проблемы.Одним из решений является передача размера buf в функцию и проверка его перед strcpy или использование strncpy.