如何解决有没有办法使用C中的fgetc转到文件的开头和指定的索引?
对于我的算法,我想在将文件中的所有字符返回到特定索引char后回溯。例如,我有一个带有ABCDEF
的文件,我想按先后顺序依次访问ABCDEF
然后BCDEF
然后CDEF
,依此类推。有没有办法我可以仅使用fgetc而没有字符串缓冲区呢?
FILE *file = fopen("temp.txt","r");
int c;
while (1) {
c = fgetc(file);
if (feof(file)) {
break;
}
// Access and print char
}
解决方法
您可能想要比这更干净地处理极端情况和错误,但是...:
#include <stdio.h>
#include <stdlib.h>
FILE *
xfopen(const char *path,const char *mode)
{
FILE *fp = path[0] != '-' || path[1] != '\0' ? fopen(path,mode) :
*mode == 'r' ? stdin : stdout;
if( fp == NULL ) {
perror(path);
exit(EXIT_FAILURE);
}
return fp;
}
int
main(int argc,char **argv)
{
int c;
long offset = 0;
FILE *ifp = argc > 1 ? xfopen(argv[1],"r") : stdin;
while( fseek(ifp,offset++,SEEK_SET) == 0 ) {
while( (c = fgetc(ifp)) != EOF ) {
putchar(c);
}
if( ferror(ifp) ) {
return EXIT_FAILURE;
}
if( offset == ftell(ifp) ) {
break;
}
}
return EXIT_SUCCESS;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。