因此,我对 C 编程非常陌生,并尝试将字符串替换为我读取的文件中的日期,然后将其写入另一个文件。但问题是当我将它写入文件时,字符串保持不变。
我想要的是从文件中读取这个:
<html>
<head>
<!--#include file=”date”-->
</head>
<body>
</body>
</html>
输出文件
<html>
<head>
Sat Nov 3 14:43:53 2012
</head>
<body>
</body>
</html>
我收到一个错误:从不兼容的指针类型传递 date_change 中的参数 1
代码
//系统日期替换函数
void *date_change(char** s, char* str, char* date){
static char buffer[4096];
char *p;
if(!(p = strstr(*s, str))) // <!--#echo var=\"date\"--> find this
return *s;
strncpy(buffer, *s, p-*s); //
buffer[p-*s] = '\0';
sprintf(buffer+(p-*s), "%s%s", date, p+strlen(str));
return buffer;
}
//主要的
int main(int argc, char *argv[]){
int f;
f = open(argv[1], O_RDONLY);
if(errno != 0){
perror("Hiba");
exit(1);
}
//read from file
char c[1000];
while(read(f,&c, 1000)){
}
// --------------------------------// 获取系统日期并尝试用 date_change 函数替换它
time_t mytime;
mytime = time(NULL);
struct tm *time = localtime(&mytime);
char date[20];
strftime(date, sizeof(date), "%c", time); //format time as string
char* date_str;
int g = open("data.txt", O_WRONLY | O_CREAT, 0600);
//should replace all <!--#echo var=\"date\" --> to the system date
while(date_str = strstr(c, "<!--#echo var=\"date\"-->")){
date_change(&c, date_str, date);
}
write(g, c, strlen(c));
close(g);
// -------------------------------- //
close(f);
return 0;
}