char数组复制,半天想不出来!

本文介绍了一种不使用临时数组的方法来去除日期时间字符串中的特殊字符(如'-'、':'和空格),通过遍历字符串并忽略这些特殊字符,最终实现日期时间格式的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


2010-12-30 12:12:12 转成 20101230121212 

不用临时数组,半天没想出来。哎~


char a[20];;
	memset(a,0,20);
	strcpy(a,_T("2010-12-30 12:12:12"));

	char* b = a;
	for(int i = 0;*(b+i)!='\0';++b)
	{
		while(*(b+i)=='-' || 
			*(b+i)==':' || 
			*(b+i)==' ')
			i++;
		*b = *(b+i);
	}
	*b = '\0';

	printf(a);

### 如何在 C/C++ 中复制 `char` 数组 在 C/C++ 中,可以通过多种方式实现 `char` 类型数组复制。以下是几种常见的方式及其对应的示例代码。 #### 使用标准库函数 `strcpy` C 标准库提供了专门用于字符串复制的函数 `strcpy`,它可以将源字符串的内容复制到目标字符串中。注意,在使用此方法时需确保目标数组有足够的空间来存储源字符串以及终止符 `\0`[^2]。 ```c #include <stdio.h> #include <string.h> int main() { char source[] = "Hello"; char destination[50]; // 确保目标数组有足够空间 strcpy(destination, source); // 将source中的内容复制到destination printf("Copied string: %s\n", destination); return 0; } ``` #### 手动逐字符复制 如果依赖于标准库或者深入理解底层机制,则可以手动通过循环完成字符数组复制过程。这种方式更加灵活,但也容易出错,因此需要特别小心处理边界条件和内存越界问题[^1]。 ```c #include <stdio.h> void copyCharArray(char* dest, const char* src) { while (*src != '\0') { // 遍历直到遇到'\0' *dest++ = *src++; } *dest = '\0'; // 别忘了最后加上的结束标志位 } int main(){ char originalStr[]="Example String."; size_t length=strlen(originalStr)+1; // 记得算上\0的位置 char copiedStr[length]; copyCharArray(copiedStr,originalStr); puts(copiedStr); return 0; } ``` #### 使用 `memcpy` 函数 除了 `strcpy` 外,还可以采用通用的数据块复制函数 `memcpy` 来执行相同的操作。这种方法适用于已知确切字节数的情况,并局限于以零结尾的字符串。 ```c #include <stdio.h> #include <string.h> int main() { char strSource[] = "Another Example!"; char strDest[sizeof(strSource)]; memcpy(strDest,strSource,sizeof(strSource)); // 按照大小直接搬运数据 printf("Result after memcpy : %s\n",strDest ); return 0; } ``` 以上三种方法都可以有效地完成 `char` 数组间的复制工作,具体选择哪一种取决于实际应用场景和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值