当前位置: 代码迷 >> C语言 >> 帮偶解释这串小代码
  详细解决方案

帮偶解释这串小代码

热度:569   发布时间:2007-12-09 16:22:11.0
帮偶解释这串小代码
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&lt;dir.h&gt;

定义函数  char * mktemp(char * template);

函数说明:  mktemp()用来产生唯一的临时文件名。参数template所指的文件名称字符串中最后六个字符必须是XXXXXX。产生后的文件名会借字符串指针返回。

返回值:  文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。

附加说明  参数template所指的文件名称字符串必须声明为数组,如:
char template[ ]=”template-XXXXXX”;
不可用char * template=”template-XXXXXX”;

范例  #include&lt;stdlib.h&gt;
main()
{
char template[ ]=”template-XXXXXX”;
mktemp(template);
printf(“template=%s\n”,template);
}



不懂的地方是,每次他产生的文件名不都是一样的么?那不就覆盖了还是怎么说?怎么能达到产生多个垃圾文件的目的?
----------------解决方案--------------------------------------------------------
极光大哥错解我的意思了.呵呵..
----------------解决方案--------------------------------------------------------
你写个程序,看看多次调用这个函数的时候,产生的文件名是不是一样的

我看函数介绍的意思是每次都产生一个不重复的文件名
----------------解决方案--------------------------------------------------------
等回学校了研究研究。呵呵。。
只知道他文件名称最后六个是xxxxxx前面的恐怕就是rand了。hoho~
----------------解决方案--------------------------------------------------------
  相关解决方案