我有一个用C语言编写的学校项目,但有一个问题。我已经阅读了有关该问题的几乎所有主题,但是没有一个主题回答了我的问题,这就是为什么我寻求您的帮助... 我创建了一个结构,其中有一个指向字符数组的指针,并且有一个包含int和char的文件。
我想创建一个函数read_file,它将逐个字符地读取此文件,然后将它们存储到动态分配的数组中。但是首先我不知道如何逐个字符地读取文件,其次我不知道如何将这些字符放入数组中。
这是我到目前为止写的内容:
char* main(int argc, char *argv[]){
FILE *p_file;
char* code = malloc(1000*sizeof(char));
char* p = code;
p_file = fopen(argv[1],"rb+");
while((ch=getc(p_file)) != EOF){
*p++ = (char)fgetc(p_file);
}
return code;
free(code);
您能帮我照亮一下还是给我发送一个可能有用的链接?
谢谢!
答案 0 :(得分:0)
检查有关读取的fread()和/或fgetc()文档。 关于数组,这取决于它是否是一个char数组(例如char arr [100]),那么您可以在继续阅读它们时将它们放在其中。希望这可以帮助。
答案 1 :(得分:0)
下面经过测试的代码。
包括标题:
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
功能:
char* readFile(const char const* filename)
{
FILE* fh = fopen(filename, "r");
char* result = NULL;
if (fh != NULL) {
size_t size = 1;
while (getc(fh) != EOF) {
size++;
}
result = (char*) malloc(sizeof(char) * size);
fseek(fh, 0, SEEK_SET); //Reset file pointer to begin
for (size_t i = 0; i < size - 1; i++) {
result[i] = (char) getc(fh);
}
result[size - 1] = '\0';
fclose(fh);
}
return result;
}
用法:
char* result = readFile("test.txt");
if (result != NULL) {
printf("%s\n", result);
free(result);
}
检查此内容:
https://en.cppreference.com/w/c/io/fgetc
https://en.cppreference.com/w/c/memory/malloc
希望获得帮助。