fscanf()放入char指针是什么?

时间:2014-08-27 15:35:14

标签: c string scanf

如果我有文件

f1.txt仅包含以下内容

stringhere

和代码(想象fp是指向FILE的{​​{1}}指针,以f1.txt模式打开)

r

char *data = malloc(MAX_STR_LEN); fscanf(fp, "%s", data); data存储的内容是什么?它是否将只读内存中的字符串文字分配给fscanf()

1 个答案:

答案 0 :(得分:2)

从文件读取的字符串被复制到malloc调用分配的动态内存中,并由data指向。

你基本上会有这样的东西(地址是凭空而来的,并不代表任何真正的平台):

Item          Address               0x00 0x01 0x02 0x03
----          -------               ---- ---- ---- ----
data          0x7ff84000            0x7f 0xff 0xf0 0x00
...
"stringhere"  0x7ffff000             's'  't'  'r'  'i'
              0x7ffff004             'n'  'g'  'h'  'e'
              0x7ffff008             'r'  'e' 0x00 0x??

此特定操作不涉及字符串文字或只读内存。