问题标签 [file-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
592 浏览

c - 将文件指针分配给另一个文件时出现分段错误

这就是我想要做的。我需要两个文件指针来引用函数“readSymColValUpdRow()”中文件中的不同位置。因此,我声明了一个文件指针 *fpval 并将 fpcol 的内容分配给它。“fpcol”是函数参数传递的有效文件指针。我试图让 fpval 指向前面的两条线。但是,这样做总是会出现“分段错误”。一旦我评论

和其他相关代码一切都很好。我真的不明白这里出了什么问题。感谢您的帮助。

0 投票
3 回答
115 浏览

c - 为什么 CODE 1 出现分段错误?

代码 1:

代码 2:

我已经编写了用于对文件中的行进行排序的代码。我已将每一行文件复制到动态分配的内存中。在循环 1中,如果我编写语句 1 ,则会出现分段错误或内存不可用。所以我修改并编写了CODE2。在这里,我得到了正确的输出。

我想知道,loop1发生了什么。

我在同一个循环中从文件中获取数据并复制到动态分配的内存中。同时进行分配和复制有错吗?

0 投票
2 回答
553 浏览

c - 如何在文件C中搜索和替换字符串

我必须以这种方式修改结构文件中的字符串:

我想这样做:我问输入ID,我问他想改变什么(如果是名字,姓氏,ID或年龄)然后我问他想改变什么。然后我在文件中搜索 ID,如果他想更改姓氏,我将 FSEEK 移至 -1,对于名称,我将 FSEEK 移至 -2,或者如果他想更改年龄,我将 FSEEK 移至 +1。

那么,有没有更简单或更快捷的方法来做到这一点?

谢谢 :)

0 投票
1 回答
848 浏览

c - 来自 fread 的错误文件描述符

我尝试使用 read() 从文件中获取一些字符,只是为了学习这个 API。我在同一目录中创建了一个名为“file”的文件,它包含 1000 个字符。但我收到一条错误消息:

这是代码:

更新 1:编译消息

0 投票
1 回答
5435 浏览

java - 寻找方法 RandomAccessFile

我有一个任务,我需要显示 200 个随机字符,然后询问使用他们想要替换的字母,然后替换所有这些字母。我生成了随机字符,但在替换字母时遇到了麻烦。有人可以帮助我朝着正确的方向前进吗?以下是我的其他一些问题:

  • 我是否对 seek 方法使用 for 循环,以便找到所有这些字母?
  • 我还需要显示每个字母的位置。我会使用文件指针,我也会把它放在一个循环中吗?

这是我的代码:

0 投票
1 回答
346 浏览

c - 将 FILE 指针传递给函数并收到错误消息“文件是未知类型名称”

我试图将一个指针传递给一个函数,但我的编译器抛出一个错误,说“文件是一个未知的类型名称”。

主要:

函数声明抛出错误:

我不包括 .h 文件之类的吗?

0 投票
2 回答
87 浏览

c - 我在 C 中的段错误的原因是什么?

当我编译我的代码时,我没有收到任何错误。但是,当我尝试运行它时,我得到一个分段错误(核心转储)。这是我的主要内容:

原始代码

我很确定我的while循环中有问题,但我不完全知道是什么,或者如何解决它。

修改后的代码

看到答案后,我修改了我的代码,使其看起来像这样,但它仍然崩溃。现在怎么了?

0 投票
3 回答
216 浏览

c - 父母在孩子出口上看到管道 eof 吗?

假设您创建了一个pipe然后fork. 在父级中,您close在写作端和fdopen阅读端获得一个FILE*. 在孩子中,您close stdoutdup2管道的一端写入管道的stdout两端close,以及exec。在什么条件下,例如execd 孩子做了什么或在父母中进行了其他调用,父母会eofFILE*孩子在消费后退出时看到stdout还是会像getline挂起这样的调用?

0 投票
0 回答
1333 浏览

c - C remove() 函数不起作用

我正在尝试在 Windows 系统上实现我在 Mac 上编写的程序,但最后一个函数遇到了很多麻烦:

该程序需要一个非常大的文件,并首先将其拆分为目录文件和正文文件。然后它获取正文并将其拆分为数百个单独的部分文件,从中执行程序的实际任务。最后,我希望它删除所有这些额外的文件,因为它们只会弄乱目录。它在我的 Unix Mac 环境中完美运行,但是当我尝试在 PC 上的命令提示符中运行它时,我的 remove() 函数为每个部分文件返回 -1 并且不会删除它(但是,它确实成功删除了表和正文文件)。我还通过使用 system(del fileName) 尝试了一种更暴力的方法,但这也不起作用,因为它表示该文件正在被另一个进程使用。我无法弄清楚为什么这些文件可能会打开,因为每次 fopen() 出现时,我用 fclose() 跟进它。例外是在检查文件是否打开时,我使用

这可能是问题吗?有没有办法检查文件是否打开而不实际打开它,或者有没有办法关闭以这种方式检查的文件?我尝试为其分配一个虚拟指针并进行编码:

但这也不起作用。是否可以只将文件路径传递给 fclose() 函数(例如,类似于 fclose(C:\users\USER\desktop\fileName.txt) 的东西?另外,我知道程序正在尝试删除正确的文件名,因为我的错误消息将正确的名称打印到命令提示符。

非常感谢任何输入!!!谢谢。

注意: tableArray 从 1 开始,因为程序中实现了一个搜索功能,如果找到则返回索引,如果未找到则返回 0。事后看来,如果没有找到,最好返回 -1 并将索引从零开始,但这是一个单独的问题

更新:

以下是用于创建节文件的代码:

0 投票
2 回答
642 浏览

c - 在 while 循环中逐行读取文件,而另一个函数对其进行更新

我正在从头到尾在 while 循环中读取文件:

该函数delete_line_from_file()从文件中删除传递给它的行。open(fd, O_RDONLY | O_CLOEXEC)它通过++读取整个文件,然后从缓冲区中删除该行并通过read()++将整个缓冲区close()写入同一个文件。被锁定在咨询读锁中,并且被锁定在咨询写锁中。open(fd, O_WRONLY | O_TRUNC | O_CLOEXEC)write()close()read()struct flock lkwrite()

当我读取文件时,有些行会丢失,这与我在写入文件时从头到尾在一个循环中读取文件有关。如果我读入整个文件并逐行浏览缓冲区,则不会遗漏任何行。(到目前为止,这是我首选的解决方案。)在截断和写入文件时也没有出错。循环结束后,丢失的行仍在文件中。

我可以确保我的 while 循环不会遗漏一行并完全清空文件吗?该文件需要逐行清空。它不能被截断。

这是我想到的一种可能的解决方案。通过镜像文件fstat(file &fbuf)并检查它的大小,if (fbuf.st_size !=0) fseek(file, 0, SEEK_SET);但这似乎效率低下。