gpt4 book ai didi

c - 从 C 中的另一个文件获取数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:17 25 4
gpt4 key购买 nike

我有这些方法。
我在stringcontent.h 文件中定义了一个字符数组,该数组取自另一个文件test.c 中的方法>.

// 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 rubbish rubbish !!!
}

我必须坚持这个方法接口(interface)(函数签名),我该如何解决这个问题?

最佳答案

如果我理解,您想使用函数 get_char_array 获取变量。然后,如果我知道您需要执行以下操作(更改 get_char_function 以接收指向 char 的指针):

// 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" !!!
}

在这种情况下,您必须注意在调用 get_char_array 之前在 buf 中分配足够的大小。

我更喜欢第一种解决方案,它不需要使用 strcpy。如果您没有在 buf 中分配足够的空间,您可能会遇到问题。一种解决方案是在函数中传递 buf 的大小,并在 strcpy 之前检查它或使用 strncpy。

关于c - 从 C 中的另一个文件获取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com