我使用msgText
制作字符串:
filename.txt
这是为了在snprintf
中存储Linux命令。该命令将在稍后执行,并以天为单位输出%s
的年龄。
这里的问题是:
这是错误的,因为error: format ‘%s’ expects a matching ‘char *’ argument
期望{{1}}有一个字符串参数。编译器报告此错误:
{{1}}
我该怎么办?
答案 0 :(得分:2)
如果您希望替换%s
,请向const char*
提供snprintf
个参数以及要写入的值。
如果您想在%s
中使用文字msgText
,则将%
转义为%%
,或将字符串作为单个参数传递给格式字符串{{ 1}}:
"%s"
答案 1 :(得分:1)
你不应该为这样简单的东西调用一个shell和两个date
进程。您应该stat()
该文件,并从C:
#include <time.h>
#include <unistd.h>
#include <sys/stat.h>
double age(const char *path) {
struct stat buf;
if (stat(path, &buf)) {
perror("stat");
return -1;
}
time_t now = time(NULL);
if (time < 0) {
perror("time");
return -1;
}
return difftime(now, buf.st_mtime) / 86400;
}
测试程序非常简单:
#include <stdio.h>
int main(int argc, char **argv)
{
while (*++argv)
printf("%s: %.0f days\n", *argv, age(*argv));
}