谁能给我解释一下这道c语言题?
#include "stdio.h"
void WriteStr(char *fn,char *str)
{
FILE *fp;
fp=fopen(fn,"W");
fputs(str,fp);
fclose(fp);
}
main()
{
WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是 d
A)start
B)end
C)startend
D)endrt
我总觉得他给的程序有错误,可是不知到错在那?
而且writestr函数要求的是两个字符型指针,可主函数在引用时却给了两个字符串???
谁明白,解释一下
参考答案:答案是正确的,因为你使用打开文件时没有调整属性,均是直接写入属性所以第二次写入内容时候还是从文件的最开始位置写入,所以前三个字符被第二次的写入覆盖了,如果想得到答案C可以第二次打开文本使用“at++”属性。
另外你看清楚了,函数的参数是两个字符型指针是没错,但是你是否理解了参数传递的本质呢?
你应该很常见到char *p="hello";之类的定义吧,所以是没有问题的。
参考资料: