c - 练习 5-3。编写我们在第 2 章中展示的函数 strcat 的指针版本: strcat(s,t) 将字符串 t 复制到 s 的末尾
问题描述
无法弄清楚为什么当参数是相同的字符串时程序不起作用。
int main (void) {
char s[] = "123";
strcat(s, s);
return 0;
}
void strcat (char *s, char *t) {
int len = strlen(s);
while (*t != '\0')
*(s + len++) = *t++;
*(s + len) = '\0';
}
解决方案
您需要在第一个字符串中留出空间来连接第二个字符串。而且您正在修改您正在读取的相同内存。正如您所做的那样,您正在删除终止字符,因此这可能会以无限循环告终。
推荐阅读
- angular - Angular 6 'ng build --prod' 不会缩小/丑化 index.html
- google-apps-script - 从 Android 访问 Google Apps 脚本编辑器
- excel - Tableau 日期和时间
- c# - 如何检查 datagridview 是否已排序?
- java - Spring Bean设置不起作用,没有这样的bean
- python - 使用 Tensorflow 服务为预训练的 keras xception 模型提供服务时出现前置条件失败错误
- php - Yii 1.1.19 加入表更新不能完全工作
- linux - 使用 BASH 注释区间
- algorithm - 比较高度平衡树和重量平衡树
- powerbi - 如何使用 mvc c# 将 power bi 嵌入式报告导出到 power point