192*_*496 -1 c linux binaryfiles unlink
我想读取命令行参数中给出的文件,并在读取后删除它.这就是我正在做的事情.
char *filename = argv[1];
char *outputfile = strcat(argv[1], ".cmp");
fd = open(argv[1], O_RDONLY);
chars = read(fd, buf, BUFFERSIZE);
fd1 = creat(outputfile, 0644);
write(fd1, buf, BUFFERSIZE);
close(fd1);
close(fd);
unlink(argv[1]);
Run Code Online (Sandbox Code Playgroud)
如果我给"mytxt"在命令行中,代码应该创建"mytxt.cmp"文件并删除"mytxt",相反,它是删除"mytxt.cmp"保持"mytxt",因为它是.为什么会这样?如何删除命令行参数中给出的文件.
char *outputfile = strcat(argv[1], ".cmp");
Run Code Online (Sandbox Code Playgroud)
您正在修改argv[1]并filename指向它.你可以尝试用一个新的字符串malloc和sprintf-ing所需的值.
char *newstr = malloc(strlen(argv[1]) + strlen(".cmp") + 1);
sprintf(newstr, "%s.cmp", argv[1]);
Run Code Online (Sandbox Code Playgroud)