在strcat之后恢复为null

时间:2013-03-04 07:08:28

标签: c strcat

我正在尝试strcat一个路径名传递给fopen以在while循环中创建多个文件名。

char path[30]="";
while(!feof(stdin))
{
    strncat(path,folder,8);
    strcat(path,filename);
    strncat(path,ext,4);
    printf("file path:%s\n",path);
    File[n] = fopen(path,"a");
    path=0;
}

如何将路径返回到空char数组,以便我可以再次连接? 或者有更好的方法吗?

6 个答案:

答案 0 :(得分:1)

由于它是空终止的,只需执行

path[0] = 0;

答案 1 :(得分:0)

尝试memset()功能。它将允许您清理数组。

写:

memset((void*)path, 0, 30*sizeof(char));

而不是

path = 0;

答案 2 :(得分:0)

它出错是因为path没有足够的空间来连接所有字符串,直到EOF?!

至少将strncat(path,folder,8);替换为strncpy(path,folder,8);并删除path=0;

或者只需将path=0;替换为path[0]=0;

答案 3 :(得分:0)

path=0;更改为path[0] = 0;。这将使字符串为空。

答案 4 :(得分:0)

设置路径[0] = 0;这样的例程注意到0为结束。

答案 5 :(得分:0)

使用snprintf创建路径的内容

#define MAX_PATH_SIZE 30
char path[MAX_PATH_SIZE] = "";
while (!feof(stdin))
{
  snprintf(path, MAX_PATH_SIZE, "%s%s%s", folder, filename, ext);
  printf("file path:%s\n",path);
  File[n] = fopen(path,"a");
}