gpt4 book ai didi

c - 将 char 数组分配给传递给函数的引用

转载 作者:行者123 更新时间:2023-11-30 17:31:40 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,该程序将返回从 t​​ext2.text 文件读取的值,但似乎它不会在 *buffer 指针上返回任何内容。当我尝试检查 checkValue 函数中“buffer”内的字符串时,它会显示 text2.text 内的数据,但当它返回到 main 函数时,它不会显示。有什么建议我如何将值传递给主函数?谢谢。

#include <stdio.h>
#include <stdlib.h>

typedef struct VALUE_READER
{
char *result;
char *fileName;
char *sectionName;
char *keyName;

} Value_reader;

void checkValue(FILE *name_of_file, char *buffer, int size_of_file)
{
int i;
char holder[size_of_file];
buffer = malloc(sizeof(char) * size_of_file);


printf("%d \n",size_of_file);

for (i = 0; i < size_of_file; i++) {
holder[i] = fgetc(name_of_file);
if (holder[i] == EOF)
break;
}
holder[i] = 0;

for (i = 0; i < size_of_file; i++)
*(buffer+i) = holder[i];

}

int main()
{
Value_reader *vr1;
FILE *testFile;
int size_of_file;

testFile = fopen("test2.txt", "r");

fseek(testFile, 0, SEEK_END);
size_of_file = ftell(testFile);
fseek(testFile, 0, SEEK_SET);


if (NULL == testFile) {
printf("File not found!\n");
}

else {
vr1->result = malloc(sizeof(char) * 400);

checkValue(testFile, vr1->result, size_of_file);
printf("\nThe data inside are:\n\"%s\"\n", vr1->result);

free(vr1->result);
fclose(testFile);
}

}

最佳答案

通过调用 mallocmain 中分配一个缓冲区。然后将该指针传递给 checkValue。在 checkValue 中,您忽略传入的指针并分配一个新的缓冲区。您写入该新缓冲区,但调用者无法看到您写入的内容,因为您写入的是 checkValue 私有(private)的缓冲区。

或者:

  1. 写入调用者提供的缓冲区,或者
  2. checkValue 中分配缓冲区并将该缓冲区返回给调用者。

关于c - 将 char 数组分配给传递给函数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24504548/

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