- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
以下是我的代码,用于将一些硬编码的 int 值 (1,2,3,4,5) 写入文件,关闭该文件,以读取模式打开同一文件并读取写入的元素。从输出中可以看出,fwrite 正确发生,但 fread 读取不正确。
#include<stdio.h>
int main()
{
FILE *fptr;
FILE *optr;
const char *filepath = "E:\\testinput.txt";
int buf[5]={1,2,3,4,5};
int obuf[5];
int value;
int *ptr = &value;
int num_bytes_read;
int no_of_iterations;
int i;
int ret;//return value for fwrite
int count = 0;
no_of_iterations = 5;
//open the file
fptr = fopen(filepath, "wb");
if(fptr == NULL){
printf("error in opening input file");
}
/*optr = fopen(outFilepath, "wb");
if(optr == NULL){
printf("error in opening output file");
}*/
printf("int %d ", sizeof(int));
for(i=0;i<5;i++){
printf("writing %d",buf[i]);
ret = fwrite(buf,sizeof(int),1,fptr);
if(ret != 1)
{
printf("error in fwrite:%d\n", ret);
}
}
//written to input file
fclose(fptr);
fptr = fopen(filepath, "rb");
if(fptr == NULL){
printf("error in opening input file");
}
for(i=0;i<5;i++){
//reading from input file
num_bytes_read = fread(ptr,sizeof(int),1,fptr);
if(num_bytes_read == 1){
obuf[i] = *ptr;//storing into buf what is read from file
printf("read successful: %d\n", obuf[i]);
count++;
}
else{
count = 99;
break;
}
printf("\ncount%d", count);
}
fclose(fptr);
return 0;
}
写入的输入文件,如果手动打开(在任何文本编辑器中)看到 5 个非字母数字字符(重复相同的符号)这是 Eclipse 中的输出
int 4 writing 1writing 2writing 3writing 4writing 5read successful: 1
count1read successful: 1
count2read successful: 1
count3read successful: 1
count4read successful: 1
count5
最佳答案
问题出在这一行:
ret = fwrite(buf,sizeof(int),1,fptr);
对 fwrite
的所有 5 次调用都具有相同的缓冲区地址,因此每次写入数组的第一个元素时都是 1
。
由于要将所有数组元素一一写入,将buf+i
作为起始地址传递给fwrite
:
ret = fwrite(buf+i,sizeof(int),1,fptr);
现在fwrite
得到的缓冲区起始地址就是数组中第i
个元素的地址。
关于c - 在 C 中用 fread 和 fwrite 提问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5308620/
我遇到一些 fwrite 问题,它以我不明白的方式失败。 在这段代码中,fwrite 都失败并给出 tmp = 0。 if ((file = fopen(filenameout, "wb")) !
好吧,事情是这样的……我记得上周创建了一个程序,要求我以二进制模式打开一个文件并向其中写入数据。首先,我尝试使用fopen函数,检查结果是否正确,然后尝试写入数据。我记得第一次尝试时,fwrite 操
早上好, 我正在尝试将以下结构的内容写入文件(更具体地说是 BMP 文件),并且想知道为什么 fwrite 的二进制输出ing 整个结构和 fwrite结构体的各个项目是不同的。这就是C的工作方式吗?
我在某个地方遇到了这个。 正在写入一个文件,然后rewind(fileptr) 完成,然后写入应该写入文件开头的内容。但是写在开头,不会覆盖文件的内容吗?请指教。 最佳答案 技术上,是 是的,文件将被
fwrite 一个整数取决于字节序,但是有没有一种方法可以将一个整数 0x00000004 写入一个文件,这样无论它运行在什么机器上,它都可以始终被读取为 0x00000004。 一个想法是始终按照特
我在 php 中编写一个函数,在客户端我有一个 Canvas 图像,我使用 toDataUrl() 和一个文件名将图像保存在服务器上。这是代码: 关键是这段代码有效。对于我在其上使用的三分之二的页面
当我运行这个小代码并在控制台上输入 3 个整数时,由于 fwrite 语句,它没有按应有的方式打印出来。只有在我连续按回车键一段时间后,它才会打印出来。帮助?P.S:学习速度比 scanf 和 pri
我的网站在 /var/www/html/hs/ ,我有我的更新.php .它应该写到/var/www/html/hs/json/myFile.json ,但事实并非如此。当我尝试写入 的同一目录时更新
这个函数应该获取一个参数作为文件的指针并将所有文件放入struct anagram ,然后将其写入另一个文件。现在每个数据之间都有很大的空间。 charCompare 工作正常,因为我制作了一个测试文
这是在我的网站上上传带有“var$”内容的“file.txt”的 URL: http://www.mywebsite.com/fwrite.php?stringData=var$&myFile=fil
如果字符串包含 ~,我似乎无法将其打印到标准输出。 > A = "/.git". > io:fwrite(A). /.gitok > B = "~/.git". > io:fwrite(B). **
我发现当我尝试写入一些大数据时 fwrite 失败,如下面的代码所示。 #include #include int main(int argc, char* argv[]) { int s
我正在写这个: $fh = fopen('public/newsletter.txt', 'w'); foreach($entries as $row) { fwrite($fh,
我又来了,这次有一个 PHP 问题...我正忙于制作某种管理面板(非常基本),但是当我试图像我的 slider 或其他东西一样进行更改时,fwrite 会覆盖所有内容。这是我的 PHP 代码: 0)
根据fwrite的手册页: fread() and fwrite() return the number of items successfully read or written (i.e., no
我只是想对一组数字进行排序(虽然我发布的代码不是我要使用的方法,但我确实需要将代码中的输出写入二进制文件). 一切正常,除了“ordenar”的最后一次迭代:当我在订购后再次打印回数字时,除了最后一行
我想使用 data.table::fwrite 以文本日志的形式快速存储和检索状态。这些是通过移动应用程序更新的,该应用程序使用管道工 API 调用到 R 端点。移动应用程序每秒可能会触发许多 API
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 5 年前。 Improve th
我正在尝试使用“fwrite”并制作 snd 文件。我想做 IIR 滤波器。我制作了一个 FIR 滤波器,并使用 IIR 滤波器的代码。(当然,改变系数)但我认为“fwrite”不起作用。因为IIR滤
我正在尝试将 wchar 数组写入 C 中的文件,但是存在某种损坏和不相关的数据,例如这样的变量和路径 c.:.\.p.r.o.g.r.a.m. .f.i.l.e.s.\.m.i.c.r.o.s.o.
我是一名优秀的程序员,十分优秀!