我有以下代码来打开内存中的缓冲区并向其中写入一些数据:
int main() {
char buf[1000] = {0};
FILE * os = fmemopen(buf, 1000, "w");
fprintf(os, "%d", 100);
fclose(os);
printf("%d\n", buf);
return 0;
}
输出是一些随机数,例如:895734416
或负数......为什么会这样?
我有以下代码来打开内存中的缓冲区并向其中写入一些数据:
int main() {
char buf[1000] = {0};
FILE * os = fmemopen(buf, 1000, "w");
fprintf(os, "%d", 100);
fclose(os);
printf("%d\n", buf);
return 0;
}
输出是一些随机数,例如:895734416
或负数......为什么会这样?
printf("%d\n", buf);
输出地址buf
而不是返回值。
printf("%d\n", buf);
这将打印地址buf
作为其指针变量。
如果您真的想打印其地址,请使用%p
而不是%d
.
如果要打印字符串 use %s
,但要确保从文件中读取的缓冲区为空终止。
在内存中,所有数据都存储在 1 和 0 中。如何解释数据取决于您。
If you want the data to be printed as integer, use %d.
If you are printing a address , use %p.
If you want the data to be printed as char, use %c.
If you want the data to be printed as string, use %s.
在您的示例中,使用
printf("%d\n", buf);
以获得正确的输出。