2013-03-04 68 views
1

我想strcat一個路徑名傳遞給fopen以在while循環中創建多個文件名。strcat後恢復爲空

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數組的路徑,以便我可以再次連接? 還是有更好的方法來做到這一點?

+0

分段錯誤,因爲路徑將保持原來的字符串時,它循環之後。 – user2130765 2013-03-04 07:10:22

回答

1

既然是空終止,只是做

path[0] = 0; 
0

嘗試memset()函數。它將允許你清理一個數組。

寫:

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

,而不是

path = 0; 
+0

爲什麼他必須將0設置爲'path'的所有元素? – deepmax 2013-03-04 07:23:40

+1

@MM。其實,你是對的。沒有必要。 – Alex 2013-03-04 07:24:37

0

它的故障,因爲path沒有足夠的空間來Concat的所有字符串,直到EOF?!

至少用strncpy(path,folder,8);代替strncat(path,folder,8);並刪除path=0;

或者只是用path[0]=0;代替path=0;

0

變化path=0;變爲path[0] = 0;。這將使字符串爲空。

0

集路徑[0] = 0;這樣的例程注意到0作爲結束。

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"); 
}