如果我有文件
f1.txt仅包含以下内容
stringhere
和代码(想象fp
是指向FILE
的{{1}}指针,以f1.txt
模式打开)
r
char *data = malloc(MAX_STR_LEN);
fscanf(fp, "%s", data);
中data
存储的内容是什么?它是否将只读内存中的字符串文字分配给fscanf()
?
答案 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??
此特定操作不涉及字符串文字或只读内存。