我想问的是,有一个函数可以从C自下而上读取文本文件吗?
Exp:文字内容为abcdef
- >我们将获得fedcba
。
如果没有这样的功能,我正在考虑将文本内容传递到数组中,然后反转数组,那可以吗?你对这个问题有更好的解决方案:)
答案 0 :(得分:1)
标准库中没有执行此操作的功能。您可以将数据传递到可变char数组并执行就地反转。
这显然不会从底部到顶部读取文件,它从头到尾读取并使用O(N)时间和O(1)空间复杂度。你可以玩寻找位置并试图向后看;看到表演会很有意思。
仅供参考
有关复杂性分析的信息,请参阅http://www.geeksforgeeks.org/an-in-place-algorithm-for-string-transformation/
答案 1 :(得分:1)
以下代码可能符合您的目的,
char a[MAX];
int flag=1,i=0;
fseek(fp, 0, SEEK_END);
while(flag>0)
{
a[i]=fgetc(fp);
i++;
if(fseek(fp,-2,SEEK_CUR)==-1)
{
flag=0;
}
}
答案 2 :(得分:1)
你可以开发自己的函数,使用fseek()
标准函数从底部读取:
char *my_read(FILE *fp)
{
int i, size;
char *buffer;
fseek(fp, 0, SEEK_END);
size = ftell(fp);
buffer = malloc((size+1) * sizeof(char));
for (i=0; i<size; i++)
{
fseek(fp, size-1-i, SEEK_SET);
buffer[i] = fgetc(fp);
}
buffer[size] = 0;
return buffer;
}
答案 3 :(得分:1)
您可以开发自己的功能,从头开始读取,但从底部开始保存在数组中。
此功能将:
每次阅读时都比使用fseek
更简单
char *my_read(FILE *fp)
{
int i, size;
char *buffer;
fseek(fp, 0, SEEK_END);
size = ftell(fp);
fseek(fp, 0, SEEK_SET);
buffer = malloc((size+1) * sizeof(char));
for (i=(size-1); i>=0; i--)
{
buffer[i] = fgetc(fp);
}
buffer[size] = 0;
return buffer;
}