在C或C++中,如何从T开始截断字符字符串,并用其他字符替换指令行中的字符?[英] How to truncate char string fromt beginning and replace chars instring by other chars in C or C++?

问题描述

你好,

我有一个从 ctime_r 返回的日期时间字符字符串,它在
格式如"Wed Jun 30 21:49:08 1993\n\0",有 26 个字符
包括最后一个终止字符''\0'',我想删除
"星期三"的工作日信息在这里,我也想
用"_"替换空格字符并删除"\n"字符.我没有
知道如何从头开始截断字符串或​​替换一些字符
在带有另一个字符的字符串中,而不使用通过一个字符的循环
按字符串的一个字符.我使用下面的代码来实现
替换""通过"_"并且还删除了最后一个"\n"字符,没有
考虑删除前 4 个字符,即工作日信息.
但即便如此,我仍然没有得到我喜欢的东西.下面是我的代码
写道:
#include <time.h>
#include <stdio.h>

int main(void)
{
time_t ltime;
字符 buf[50];

//获取时间
时间(<ime);

//ctime_r 返回的日期时间字符串格式为
//来自"1993 年 6 月 30 日星期三 21:49:08\n\0"
printf("时间为:%s", ctime_r(&ltime, buf));

//替换""和":"在日期时间字符串中
//由"_"
buf[7] = "_";//"",第 18 行
buf[10] = "_";//"",第 19 行
buf[13] = "_";//":",第 20 行
buf[16] = "_";//":",第 21 行
buf[19] = "_";//"",第 22 行
buf[24] = "\0";//删除最后一个 \n 字符,第 23 行

//printf 新的日期时间字符串
printf("时间是:%s", buf);

}

当我使用 gcc 遵守它时,我收到以下警告:

test_ctimer.c:在函数"main"中:
test_ctimer.c:18:警告:赋值使指针变成整数
没有演员表
对第 19 行到第 23 行也有同样的警告.

当我运行它时,我得到:

时间:2008年8月7日星期四15:02:32
时间是:Thu AugX 7X15X02X32X2008Z

任何人都可以帮助我吗?我在网上搜了一下,好像是C
库没有从头开始截断的功能?还有它
也没有字符替换功能.我应该有
使用循环?

非常感谢您提前提供的帮助.

宏宇

推荐答案

宏宇写道:
你好,

我有一个从 ctime_r 返回的日期时间字符字符串,它在
格式如"Wed Jun 30 21:49:08 1993\n\0",有 26 个字符
包括最后一个终止字符''\0'',我想删除
"星期三"的工作日信息在这里,我也想
用"_"替换空格字符并删除"\n"字符.我没有
知道如何从头开始截断字符串或​​替换一些字符
在带有另一个字符的字符串中,而不使用通过一个字符的循环
按字符串的一个字符.我使用下面的代码来实现
替换""通过"_"并且还删除了最后一个"\n"字符,没有
考虑删除前 4 个字符,即工作日信息.
但即便如此,我仍然没有得到我喜欢的东西.下面是我的代码
写道:
#include <time.h>
#include <stdio.h>

int main(void)
{
time_t ltime;
字符 buf[50];

//获取时间
时间(<ime);

//ctime_r 返回的日期时间字符串格式为
//来自"1993 年 6 月 30 日星期三 21:49:08\n\0"
printf("时间是:%s", ctime_r(&ltime, buf));

//替换""和":"在日期时间字符串中
//由"_"
buf[7] = "_";//"",第 18 行
对于单个符号,您需要使用单引号:

buf[7] = ''_'';

(到处都一样).
buf[10] = "_";//"",第 19 行
buf[13] = "_";//":",第 20 行
buf[16] = "_";//":",第 21 行
buf[19] = "_";//"",第 22 行
buf[24] = "\0";//删除最后一个 \n 字符,第 23 行

//printf 新的日期时间字符串
printf("时间是:%s", buf);

}
[..]

--
邮件回复时请去掉大写的"A"
我不回复热门回复,请不要问

8 月 7 日下午 3:31*,Victor Bazarov <v.Abaza...@comAcast.net 写道:
宏宇写道:
你好,
我有一个从 ctime_r 返回的日期时间字符字符串,*它在
格式如"Wed Jun 30 21:49:08 1993\n\0",有 26 个字符
包括最后一个终止字符''\0'',我想删除
"星期三"的工作日信息在这里,我也想
用"_"替换空格字符并删除"\n"字符.我没有
知道如何从头开始截断字符串*或替换一些字符
在带有另一个字符的字符串中,而不使用通过一个字符的循环
按字符串的一个字符.我使用下面的代码来实现
替换""通过"_"并且还删除了最后一个"\n"字符,没有
考虑删除前 4 个字符,即工作日信息.
但即便如此,我仍然没有得到我喜欢的东西.下面是我的代码
写道:
#include <time.h>
#include <stdio.h>
int main(void)
{
* *time_t ltime;
* *char buf[50];
* *//获取时间
* *时间(<ime);
* *//ctime_r返回的日期时间字符串格式为
* *//来自"1993 年 6 月 30 日星期三 21:49:08\n\0"
* *printf("时间是:%s", ctime_r(&ltime, buf));
* *//替换 ""和":"在日期时间字符串中
* *//由"_"
* *buf[7] = "_";*//"",第 18 行

对于单个符号,您需要使用单引号:

* * *buf[7] = ''_'';

(到处都一样).
* *buf[10] = "_";//"",第 19 行
* *buf[13] = "_";//":",第 20 行
* *buf[16] = "_";//":",第 21 行
* *buf[19] = "_";//"",第 22 行
* *buf[24] = "\0";//删除最后一个 \n 字符,第 23 行
* *//printf 新的日期时间字符串
* *printf("时间是:%s", buf);
}
[..]


--
邮件回复时请去掉大写的"A"
我不回复置顶的回复,请不要问-隐藏引用的文字-

- 显示引用的文字 -
非常感谢维克多的及时帮助.有效!编译器
错误消失了,空格被替换为"-".能不能也说一下
我如何删除字符串开头的字符?以及如何
删除字符串中的一个字符,因为我还有一个空格
字符串,并希望将其删除.我尝试使用类似:
buf[0]='''',但出现编译器错误,例如:test_ctimer.c:18:12: empty
字符常量

非常感谢.

宏宇写道:
[..] 你也可以告诉
我如何删除字符串开头的字符?以及如何
删除字符串中的一个字符,因为我还有一个空格
字符串,并希望将其删除.我尝试使用类似:
buf[0]='''',但出现编译器错误,例如:test_ctimer.c:18:12: empty
字符常数
RTFM 关于 ''memmove'' 功能.它应该适用于重叠范围.
你可以''memmove''字符串的一部分,IIRC.


--
邮件回复时请去掉大写的"A"
我不回复热门回复,请不要问

本文地址:https://www.itbaoku.cn/post/1050678.html

相关标签/搜索