帮偶解释这串小代码
for (i = 0; i<5; i++){
char tempname[] = "XXXXXX" ; NewName = mktemp(tempname);
fp = fopen(NewName,"w");
fclose(fp);
}
mktemp开辟一个temp存放x文件名的文件?
这个循环有什么用?具体是怎么循环的?是不是tempname[] 少了个i?
这是个制造垃圾文件的函数.
----------------解决方案--------------------------------------------------------
mktemp()这个函数干什么用的?
char tempname[] = "XXXXXX"
定义数组的时候,如果同时初始化整个数组,可以不写数组长度,象这一句跟
char tempname[7] = "XXXXXX"是等效的
----------------解决方案--------------------------------------------------------
这个循环每次都用"XXXXXX"来初始化字符数组 tempname[],看起来有点多余。
从 NewName = mktemp(tempname);
来看,mktemp()应该是一个返回c-string的函数,并将其传递给fopen()。
----------------解决方案--------------------------------------------------------
在我看来他这个代码实现不了制造垃圾文件的功能吧.?
----------------解决方案--------------------------------------------------------
mktemp
功能:产生唯一的临时文件名
表头文件 #include<dir.h>
定义函数 char * mktemp(char * template);
函数说明: mktemp()用来产生唯一的临时文件名。参数template所指的文件名称字符串中最后六个字符必须是XXXXXX。产生后的文件名会借字符串指针返回。
返回值: 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
附加说明 参数template所指的文件名称字符串必须声明为数组,如:
char template[ ]=”template-XXXXXX”;
不可用char * template=”template-XXXXXX”;
范例 #include<stdlib.h>
main()
{
char template[ ]=”template-XXXXXX”;
mktemp(template);
printf(“template=%s\n”,template);
}
不懂的地方是,每次他产生的文件名不都是一样的么?那不就覆盖了还是怎么说?怎么能达到产生多个垃圾文件的目的?
----------------解决方案--------------------------------------------------------
极光大哥错解我的意思了.呵呵..
----------------解决方案--------------------------------------------------------
你写个程序,看看多次调用这个函数的时候,产生的文件名是不是一样的
我看函数介绍的意思是每次都产生一个不重复的文件名
----------------解决方案--------------------------------------------------------
等回学校了研究研究。呵呵。。
只知道他文件名称最后六个是xxxxxx前面的恐怕就是rand了。hoho~
----------------解决方案--------------------------------------------------------