使用命令提示符

时间:2017-04-13 11:58:51

标签: c file cmd arguments srt

我们说我有一个名为" ____。srt" ,___可以是任何东西。 我试图通过添加' 1'来改变它的名字。 ,所以它看起来像这样" ____ 1.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]);  }

这似乎不起作用。有人可以找出问题吗?我很感激任何帮助。 谢谢

1 个答案:

答案 0 :(得分: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");
}