我想知道我是否可以在文本文件中跳转位置.假设我有这个文件.
12
8764
2147483648
2
-1
Run Code Online (Sandbox Code Playgroud)
每当我尝试读取第三个数字时它就不会读取,因为它大于32位int的最大数字.所以每当我达到第三个数字时,它就会一遍又一遍地读取第二个数字.我怎样才能跳到第4个号码?
我在C中定义了这样的二进制文件
FILE *gfp;
gfp = fopen(gridfiles, "wb");
Run Code Online (Sandbox Code Playgroud)
变量gridfiles存储文件的名称,并且已在前面定义过.现在我在文件中写出两个变量.
for(yy = 0; yy < nfiley; yy++) {
for(xx = 0; xx < nfilex; xx++) {
filebx = beguv + xx*1E3;
fileby = enduv - yy*1E3;
fwrite(&filebx, sizeof(filebx), 1, gfp);
fwrite(&fileby, sizeof(fileby), 1, gfp);
}
}
Run Code Online (Sandbox Code Playgroud)
如果在这个代码后面我
fseek(gfp, 0, SEEK_SET);
fread(&filebx, sizeof(filebx), 1, gfp);
fread(&fileby, sizeof(fileby), 1, gfp);
fprintf(stderr, "%f %f", filebx, fileby);
Run Code Online (Sandbox Code Playgroud)
我的输出是
1000 15000
Run Code Online (Sandbox Code Playgroud)
对于前两个,这是预期的.
但如果经过一些其他的代码(根本不涉及这些文件)我重复fseek()等,我的输出是
14000 14000
Run Code Online (Sandbox Code Playgroud)
不管我做什么.我一直试图弄清楚这一段时间......任何人都知道我做错了什么?
在主要我创建一个文件指针,将其传递给一个函数来打开它,我想有一个单独的函数来关闭文件,但我无法关闭该文件.我错过了什么?
我没有收到错误,但我检查的方式表明文件没有关闭.
感谢您的帮助.
int _tmain(int argc, _TCHAR* argv[])
{
FILE *inFile, *outFile;
FileOpen(&inFile, &outFile);
FileClose(&inFile, &outFile);
getch();
return 0;
}
void FileOpen(FILE **inFile, FILE **outFile)
{
//--Open InFile--------------------------------
if ((*inFile = fopen("a.txt","r")) == NULL){
printf("\nError Opening File. ");
exit(0);
}
else {
printf("File Opened\n");
}
//--Open OutFile--------------------------------
if ((*outFile = fopen("b.txt","w")) == NULL){
printf("\nError Opening File. ");
exit(0);
}
else {
printf("File Opened\n");
}
}
void FileClose(FILE **inFile, FILE **outFile)
{
//--Close InFile----------
if (fclose(*inFile)){
printf("File Closed\n");
}
else { …Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
#include <string.h>
#include <stdlib.h>
main(int argc,char **argv)
{
FILE *fp;
char lineBuf[100],**p=NULL,temp[100];
int cnt,j,i;
if(argc!=2)
{
puts("ERROR:Invalid no.of arguments");
return;
}
fp=fopen(argv[1],"r");
if(fp==NULL)
{
printf("'%s' file doesn't exist\n",argv[1]);
}
cnt=0;
while(fgets(lineBuf,100,fp)) //...........loop1
{
cnt++;
p=realloc(p,sizeof(char*)*(cnt));
if(p==NULL)
{
puts("memory unavailable");
return;
}
p[cnt-1]=calloc(1,strlen(lineBuf));
strcpy(p[cnt-1],lineBuf); //................statement1
}
fclose(fp);
for(i=0;i<cnt;i++)
{
for(j=i+1;j<cnt;j++)
{
if(strcmp(p[i],p[j])>0)
{
strcpy(temp,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],temp);
}
}
}
fp=fopen(argv[1],"w");
for(i=0;i<cnt;i++)
fputs(p[i],fp);
fclose(fp);
puts("sorting done");
}
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main(int argc,char **argv)
{
FILE …Run Code Online (Sandbox Code Playgroud) file-pointer ×4
c ×3
c++ ×2
binaryfiles ×1
fclose ×1
file ×1
file-io ×1
file-read ×1
function ×1
pointers ×1