从 C 文件中打印短裤
Printing shorts from a file in C
大家好,我正在学习 C,我在网上搜索了这个但是找不到任何帮助。我正在尝试从文件中读取字节,将它们保存到缓冲区中,然后将它们打印为短裤。但是我到目前为止的代码有一些问题,即使它对我来说看起来合乎逻辑。我将不胜感激:
//print shorts
// write bits into the buffer
int buffer[1600];
fread(buffer, 1, 1600, myfile);
//take them out as shorts from the buffer
int shrtcnt = 0; // short count
while (shrtcnt < 160){
int nxtshrtcnt = shrtcnt + 16;
printf("This is a short: ");
for (int a = shrtcnt; a < nxtshrtcnt; a++){
printf("%d", buffer[a]);
}
printf("\n");
shrtcnt += 16;
}
这会打印出一些数字,但它们与我的预期相去甚远。有任何想法吗?
我创建了一个文件并将值放入自己。我应该得到的值是 1112131415161718 我得到像“192153000655350-20330470760655350-16777216-655360-655360000”这样的值老实说它对我来说看起来像随机的。
您使用 fread(buffer, 1, 1600, myfile);
阅读 short
。
这是错误的,因为 short
不一定是 1 个字节。请改用 sizeof(short)
并将数组声明为 short
数组。
您显示的代码示例甚至没有使用 short 关键字。 int 和 short 不是(必然)相同大小的类型。
无论如何,使用 fread() 读取 1600 个整数的数组通常需要类似于
fread(buffer, sizeof(int), 1600, myfile);
检查 fread() 的 return 值也是一个好主意。如果 sizeof(int) 为 4,并且文件总共包含 400 个字节,则 fread() 可能 return 100,表明它只成功读取了 100 个 int。毕竟,不可能在单个 fread() 语句中从仅包含 400 字节的文件中读取 6400 字节 (4*1600 = 6400)。
大家好,我正在学习 C,我在网上搜索了这个但是找不到任何帮助。我正在尝试从文件中读取字节,将它们保存到缓冲区中,然后将它们打印为短裤。但是我到目前为止的代码有一些问题,即使它对我来说看起来合乎逻辑。我将不胜感激:
//print shorts
// write bits into the buffer
int buffer[1600];
fread(buffer, 1, 1600, myfile);
//take them out as shorts from the buffer
int shrtcnt = 0; // short count
while (shrtcnt < 160){
int nxtshrtcnt = shrtcnt + 16;
printf("This is a short: ");
for (int a = shrtcnt; a < nxtshrtcnt; a++){
printf("%d", buffer[a]);
}
printf("\n");
shrtcnt += 16;
}
这会打印出一些数字,但它们与我的预期相去甚远。有任何想法吗? 我创建了一个文件并将值放入自己。我应该得到的值是 1112131415161718 我得到像“192153000655350-20330470760655350-16777216-655360-655360000”这样的值老实说它对我来说看起来像随机的。
您使用 fread(buffer, 1, 1600, myfile);
阅读 short
。
这是错误的,因为 short
不一定是 1 个字节。请改用 sizeof(short)
并将数组声明为 short
数组。
您显示的代码示例甚至没有使用 short 关键字。 int 和 short 不是(必然)相同大小的类型。
无论如何,使用 fread() 读取 1600 个整数的数组通常需要类似于
fread(buffer, sizeof(int), 1600, myfile);
检查 fread() 的 return 值也是一个好主意。如果 sizeof(int) 为 4,并且文件总共包含 400 个字节,则 fread() 可能 return 100,表明它只成功读取了 100 个 int。毕竟,不可能在单个 fread() 语句中从仅包含 400 字节的文件中读取 6400 字节 (4*1600 = 6400)。