2017-04-13 141 views
0

假設我有一個名爲「____.srt」的文件,其中___可以是任何東西。 我試圖通過添加'1'來改變它的名字,所以它會看起來像這樣的「____1.srt」。使用命令提示符在C中重命名SRT文件

使用CMD argv [1]從參數中讀取文件。

void main(int argc,char* argv[]){ 
char* pt; 
pt = strstr(argv[1],".srt\0"); // checks if end of input-string is .srt 
    if(pt == NULL) 
    { 
     fprintf(stdout,"Invalid input.\nInput file must be inputfile.srt\n"); 
     fprintf(stdout,"Program will now exit\n"); 
     return; 
    } 
    strcpy(pt,'1'); 
    strcat(argv[1],".srt"); 

    fprintf(stdout,"%s file was created.\n",argv[1]); } 

這似乎不起作用。有人能夠找出問題嗎?我會很感激任何幫助。 謝謝

+0

我不知道'c'太多,但是,不應該在'strstr(argv [1],「。srt \ 0」)'前檢查'argc'的值。 – dcg

+0

你沒有說明「它似乎沒有工作」。您正在打印出新的文件名,但實際上並未重命名該文件(或者甚至首先檢查它是否存在)。另外,在文字字符串中加入'\ 0'沒有意義。 –

+0

@Klitos我正在檢查文件是否存在。我沒有提到它,因爲它不是重點。如果我不把\ 0放在一個字符串中,我還能檢查一個字符串是否以「.srt」結尾? – Jadenkun

回答

0

經過幾次修改,你的代碼看起來像這樣,我希望它的工作原理。在你的代碼中,你沒有正確處理字符串。

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 

int main(int argc,char* argv[]){ 
    char* pt; 
    int flag; 
    pt = strstr(argv[1],".srt\0"); // checks if end of input-string is .srt 
    if(pt == NULL) 
    { 
     fprintf(stdout,"Invalid input.\nInput file must be inputfile.srt\n"); 
     fprintf(stdout,"Program will now exit\n"); 
     return 0; 
    } 

    pt = (char*)malloc(sizeof(argv[1] + 1)); // filename length + number or additional digits 
              // Needed for using strncpy function 
    strncpy(pt, argv[1], strlen(argv[1]) - 4); // copying filename except the .srt extention. 
    strcat(pt, "1.srt"); //using pt for new filename 
    flag = rename(argv[1], pt); 

    if (flag == 0) // rename returns 0 on success 
     fprintf(stdout,"New file name: %s\n", pt); 
    else 
     fprintf(stdout,"An error occurred\n"); 
} 
相關問題