使用touch命令进行C编程

use*_*881 1 c

我正在尝试创建一个程序来更改用户给出的文件的访问和修改时间戳.这就是我所拥有的:

#include <stdio.h>
int main()
{
    char file[50];
    printf("Enter file to be modified: ");
    scanf("%s", &file);
    system("touch -am -t 200005050000 %s", file);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序不会更改文件时间戳.

use*_*342 6

system函数不支持stdio样式的格式代码,例如%s.您需要使用能够理解它们的调用来预先创建命令字符串,例如snprintf,并将结果传递给system.例如:

char command[256];
snprintf(command, sizeof command, "touch -am -t 200005050000 %s", file);
system(command);
Run Code Online (Sandbox Code Playgroud)

请注意,此方法(以及您的原始尝试)将无法用于名称中包含空格或引号的文件.要对这些文件进行操作,您应该使用引号括起文件名,或者切换到不太可移植的低级进程创建API,例如execlp在类Unix系统上.