我有下面的字符指针字符串“2020年6月6日星期五11:08:04”,我想把它分成以下几部分:
日期= 6月6日星期五
时间= 11:08:04
我尝试实现的代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char *message = "Friday 6 June 11:08:04 2020";
char time_buff[9] = {0};
char date_buff[13] = {0};
for(int d=0; d<13; d++){
date_buff[d] = message[d];
}
for(int t=14; t<23; t++){
time_buff[t] = message[t];
}
for(int p=0; p<13; p++){
printf("%c ", date_buff[p]);
}
return 0;
}
当我运行这段代码时,我得到以下错误:
*** stack smashing detected ***: terminated
Aborted (core dumped)
我如何解决这个问题并将字符串拆分为日期和时间部分?
2条答案
按热度按时间ht4b089n1#
该方法非常简单,它只适用于这个特定的日期-但即使在这里,您也有2个主要错误
1.您需要空间来容纳空终止字符(您的char数组太小)。
1.复制到错误的索引(第二个循环从14开始,但你想复制到从零开始的索引)
https://godbolt.org/z/vz34v3h39
csbfibhn2#
一些小的调整在这里和那里:
int main (void)
。const
限定指向字符串文字的指针。memcpy
而不是这些循环。