【发布时间】:2012-10-23 22:13:04
【问题描述】:
所以我是 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;
}
【问题讨论】:
-
请尝试使用缩进 - 使代码更易于阅读。
-
您没有使用 date_change 返回的值。
-
@EdHeal 在他的缩进中你反对什么?我觉得很好。不是我会使用的确切样式,但也不是不稳定的。
-
你有一些问题,其中之一是你没有为 read() 定义
-
@mah - 根本没有缩进。大括号之间的代码应该缩进以使其可读(更容易看到 if 语句何时开始和结束,while 循环也是如此。
标签: c arrays string function replace