我是一个新手,正在学习C编程。我试图从一个读取的文件中将字符串替换为日期,然后将其写入另一个文件。但问题是当我将其写入文件时,字符串仍然保持不变。
我想要的是从文件中读取以下内容:
<html>
<head>
<!--#include file=”date”-->
</head>
<body>
</body>
</html>
输出文件
<html>
<head>
Sat Nov 3 14:43:53 2012
</head>
<body>
</body>
</html>
我遇到了一个错误:将实参 1 传递给 date_change 时,指针类型不兼容。
代码
// 系统日期替换函数
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;
}
perror("Hiba");
- 只是最后一条建议:使用英语错误消息是惯用的。我们都知道匈牙利语很棒,但无论如何 :) - user529758