我正在閱讀C primer Plus第5版,我在I/O章節中。我想出了一個例子(第451頁),它做了一些事情,並在某種程度上創建了一個新文件,該文件以現有文件命名,但以.red結尾。例如,如果我有這個文件「測試」,程序會創建一個「test.red」。我無法理解以下內容......命名與其他文件同名的文件
char name[LEN];
//some code...
strncpy(name,argv[1], LEN - 5);
name[LEN - 5] = '\0';
strcat(name,".red");
我看了命令strcpy的定義。它將arv [1](它包含源文件)中的第一個LEN-5字符複製到名稱。 strcat命令將.red添加到最後。但是,我不明白這個name[LEN - 5] = '\0';
的存在。我刪除它,程序仍然運行良好。
編輯
我張貼評論從書中的這些行..
要輸出文件構建新的名稱,該程序使用 函數strncpy()渦流副本的名稱爲數組名。 LEN - 5 爲.red後綴和最終的空字符留下了空間。 如果argv [2]字符串長於LEN,則不會複製空字符,因此程序會添加空字符以防萬一。當strcat()函數追加字符串 (在本例中爲eddy.red)時,在strred()調用後名稱中的第一個空字符 然後在.red中被 句點覆蓋。
明白了!謝謝! – yaylitzis