gpt4 book ai didi

c - 返回一个 C 数组并在 main.c 中读取它

转载 作者:行者123 更新时间:2023-12-01 13:41:14 24 4
gpt4 key购买 nike

我想打开文件“t10k-labels.idx1-ubyte”并打印出来。当我在 read.c 中打印它时它工作正常,但是当我尝试在 main.c 中读取返回的数组时它不起作用(它正确打印前 3 位数字,但之后它只打印 0。我不知道我做错了什么。

阅读.c

#include <stdio.h>
#define LABELSIZE 4542
#define OFFSET 8

char * test_labels() {
FILE *file;
file = fopen("t10k-labels.idx1-ubyte", "rb");
static char buffer[LABELSIZE-OFFSET];

fseek(file, 8L, SEEK_SET);
fread(buffer, 1, LABELSIZE-OFFSET, file);

/* int i; */
/* for(i=0; i<=LABELSIZE-OFFSET; i++) { */
/* printf("%d ", buffer[i]); */
/* } */

fclose(file);
return buffer;
}

主.c

#include "read.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#define LABELSIZE 4542

main() {
// char buffer[LABELSIZE-8];
char* buffer = malloc(LABELSIZE-8);
strncpy(buffer, test_labels(), LABELSIZE-8);

int i;
for(i=0; i<LABELSIZE-8; i++) {
printf("%d", buffer[i]);
}
}

最佳答案

尝试使用 memcpy,而不是 strncpy。 strncpy 将在第一个值为零的字节处停止复制。它用于复制空终止字符串,而不是字节数组。 strncpy 用更多的零填充第一个零之后的所有字节,这解释了你所看到的

关于c - 返回一个 C 数组并在 main.c 中读取它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39929808/

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