gpt4 book ai didi

在 C 中使用函数更改字符串数组内容

转载 作者:行者123 更新时间:2023-12-02 00:15:50 25 4
gpt4 key购买 nike

所以我真的是 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;
}

最佳答案

您的代码并未尝试修改传入其中的缓冲区。相反,您创建了一个要写入的静态数组,然后返回该静态数组(实际上没有查看返回值)。

关于在 C 中使用函数更改字符串数组内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com