标签: file-pointer

高级文件指针可跳过文件中的数字

我想知道我是否可以在文本文件中跳转位置.假设我有这个文件.

12
8764
2147483648
2
-1
Run Code Online (Sandbox Code Playgroud)

每当我尝试读取第三个数字时它就不会读取,因为它大于32位int的最大数字.所以每当我达到第三个数字时,它就会一遍又一遍地读取第二个数字.我怎样才能跳到第4个号码?

c++ file file-pointer

0
推荐指数
1
解决办法
478
查看次数

在C中读取二进制文件的奇怪之处

我在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)

不管我做什么.我一直试图弄清楚这一段时间......任何人都知道我做错了什么?

c file-io pointers binaryfiles file-pointer

0
推荐指数
1
解决办法
165
查看次数

如何使用FILE*fp调用函数关闭文件

在主要我创建一个文件指针,将其传递给一个函数来打开它,我想有一个单独的函数来关闭文件,但我无法关闭该文件.我错过了什么?

我没有收到错误,但我检查的方式表明文件没有关闭.

感谢您的帮助.

 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)

c c++ function fclose file-pointer

0
推荐指数
1
解决办法
166
查看次数

为什么在CODE 1中出现分段错误?

代码1:

#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)

代码2:

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

main(int argc,char **argv)
{
    FILE …
Run Code Online (Sandbox Code Playgroud)

c file-read dynamic-memory-allocation file-pointer

-3
推荐指数
1
解决办法
107
查看次数