问题标签 [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.
c - 将文件指针分配给另一个文件时出现分段错误
这就是我想要做的。我需要两个文件指针来引用函数“readSymColValUpdRow()”中文件中的不同位置。因此,我声明了一个文件指针 *fpval 并将 fpcol 的内容分配给它。“fpcol”是函数参数传递的有效文件指针。我试图让 fpval 指向前面的两条线。但是,这样做总是会出现“分段错误”。一旦我评论
和其他相关代码一切都很好。我真的不明白这里出了什么问题。感谢您的帮助。
c - 为什么 CODE 1 出现分段错误?
代码 1:
代码 2:
我已经编写了用于对文件中的行进行排序的代码。我已将每一行文件复制到动态分配的内存中。在循环 1中,如果我编写语句 1 ,则会出现分段错误或内存不可用。所以我修改并编写了CODE2。在这里,我得到了正确的输出。
我想知道,loop1发生了什么。
我在同一个循环中从文件中获取数据并复制到动态分配的内存中。同时进行分配和复制有错吗?
c - 如何在文件C中搜索和替换字符串
我必须以这种方式修改结构文件中的字符串:
我想这样做:我问输入ID,我问他想改变什么(如果是名字,姓氏,ID或年龄)然后我问他想改变什么。然后我在文件中搜索 ID,如果他想更改姓氏,我将 FSEEK 移至 -1,对于名称,我将 FSEEK 移至 -2,或者如果他想更改年龄,我将 FSEEK 移至 +1。
那么,有没有更简单或更快捷的方法来做到这一点?
谢谢 :)
c - 来自 fread 的错误文件描述符
我尝试使用 read() 从文件中获取一些字符,只是为了学习这个 API。我在同一目录中创建了一个名为“file”的文件,它包含 1000 个字符。但我收到一条错误消息:
这是代码:
更新 1:编译消息
java - 寻找方法 RandomAccessFile
我有一个任务,我需要显示 200 个随机字符,然后询问使用他们想要替换的字母,然后替换所有这些字母。我生成了随机字符,但在替换字母时遇到了麻烦。有人可以帮助我朝着正确的方向前进吗?以下是我的其他一些问题:
- 我是否对 seek 方法使用 for 循环,以便找到所有这些字母?
- 我还需要显示每个字母的位置。我会使用文件指针,我也会把它放在一个循环中吗?
这是我的代码:
c - 将 FILE 指针传递给函数并收到错误消息“文件是未知类型名称”
我试图将一个指针传递给一个函数,但我的编译器抛出一个错误,说“文件是一个未知的类型名称”。
主要:
函数声明抛出错误:
我不包括 .h 文件之类的吗?
c - 我在 C 中的段错误的原因是什么?
当我编译我的代码时,我没有收到任何错误。但是,当我尝试运行它时,我得到一个分段错误(核心转储)。这是我的主要内容:
原始代码
我很确定我的while
循环中有问题,但我不完全知道是什么,或者如何解决它。
修改后的代码
看到答案后,我修改了我的代码,使其看起来像这样,但它仍然崩溃。现在怎么了?
c - 父母在孩子出口上看到管道 eof 吗?
假设您创建了一个pipe
然后fork
. 在父级中,您close
在写作端和fdopen
阅读端获得一个FILE*
. 在孩子中,您close
stdout
将dup2
管道的一端写入管道的stdout
两端close
,以及exec
。在什么条件下,例如exec
d 孩子做了什么或在父母中进行了其他调用,父母会eof
在FILE*
孩子在消费后退出时看到stdout
还是会像getline
挂起这样的调用?
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 并将索引从零开始,但这是一个单独的问题
更新:
以下是用于创建节文件的代码:
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 lk
write()
当我读取文件时,有些行会丢失,这与我在写入文件时从头到尾在一个循环中读取文件有关。如果我读入整个文件并逐行浏览缓冲区,则不会遗漏任何行。(到目前为止,这是我首选的解决方案。)在截断和写入文件时也没有出错。循环结束后,丢失的行仍在文件中。
我可以确保我的 while 循环不会遗漏一行并完全清空文件吗?该文件需要逐行清空。它不能被截断。
这是我想到的一种可能的解决方案。通过镜像文件fstat(file &fbuf)
并检查它的大小,if (fbuf.st_size !=0) fseek(file, 0, SEEK_SET);
但这似乎效率低下。