社区
C语言
帖子详情
急救:c语言中字符串连接出问题,在线等待
HitXU
2003-08-22 11:52:49
字符串(i) = 字符串(i-1) + 字符串(i-2)
看起来很简单,可是我写了几行代码总是不对。
请大侠指点怎么写
...全文
1794
37
打赏
收藏
急救:c语言中字符串连接出问题,在线等待
字符串(i) = 字符串(i-1) + 字符串(i-2) 看起来很简单,可是我写了几行代码总是不对。 请大侠指点怎么写
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
37 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
MasterGo
2003-08-23
打赏
举报
回复
字符串的末尾有一个结尾符
woaichenyu
2003-08-23
打赏
举报
回复
看来高手还是很多的嘛
hillyee
2003-08-23
打赏
举报
回复
printf(string); ok了
oopig
2003-08-23
打赏
举报
回复
看来十代以上的兔子家族的数目就非常可观了,呵呵
oopig
2003-08-23
打赏
举报
回复
建议你用c++中stl的链表做,轻松很多:
#include <iostream>
#include <list>
#include <assert.h>
using namespace std;
//兔子繁殖一代,即'a'=>'b', 'b'=>'ba'
void breed(list<char> &rabit)
{
list<char>::iterator it = rabit.begin();
while (it != rabit.end())
{
switch (*it)
{
case 'a': //小兔子变成大兔子
*it++ = 'b';
break;
case 'b': //大兔子生出小兔子
rabit.insert(++it, 'a');
break;
default: //这里不知道是什么兔子,略过
assert(false);
it++;
}
}
}
//打印 兔子
void print(const list<char> &rabit)
{
list<char>::const_iterator it = rabit.begin();
for (; it != rabit.end(); it++)
{
cout << *it;
}
cout << endl;
}
int main()
{
list<char> rabit;
rabit.push_back('a'); //预先有一只小兔子
//10代兔子
for (int i = 0; i < 10; i++)
{
print(rabit);
breed(rabit);
}
print(rabit);
return 0;
}
jnqx
2003-08-23
打赏
举报
回复
#include <stdio.h>
#define LEN 1024
#include "stdlib.h"
#include "string.h"
void main()
{
char *f1, *f2, *f3;
int loop;
f1 = (char *)malloc(LEN);
f2 = (char *)malloc(LEN);
f3 = (char *)malloc(LEN);
f1 = "a";
f2 = "b";
for (loop = 0; loop < 3; loop++)
{
strcpy(f3, f2);
strcat(f3, f1);
f1 = f2;
f2 = f3;
printf("%p\n", f1);
printf("%p\n",f2);
printf("%p\n",f3);
}
printf("%s\n", f3);
}
上面的程序我试过了,也不行!
在循环中,我输出了他们的地址,
除了第一次f1的地址不同,其余的都相同!?
3次循环后,地址相同!
所以当printf("%s\n",f3);时,系统不知道是输出f1,还是f2,f3?(我瞎猜的!)
希望大虾们指点一二。
紫郢剑侠
2003-08-22
打赏
举报
回复
用strcat().
Dragon132
2003-08-22
打赏
举报
回复
用函数就行啦
sprintf(字符串(i),"%s%s", 字符串(i-1), 字符串(i-2));
njtu
2003-08-22
打赏
举报
回复
不太清楚你的意思,把你的代码贴出来看看吧。
dddd8888
2003-08-22
打赏
举报
回复
<string.h>
用strcat(char *str, const char*);
必须保证str数组不越界
在c中不能和VB一样字符串相加,除非用C++ stl的string类 或 MFC中的CString类
aflyinghorse
2003-08-22
打赏
举报
回复
要包含头文件
<string.h>
aflyinghorse
2003-08-22
打赏
举报
回复
char *strcat(s,ct) concatenate string ct to end of string s; return s.
其中参数s为char *, ct为const char *
tonybaobao
2003-08-22
打赏
举报
回复
不明白你的意思。
made_in_
2003-08-22
打赏
举报
回复
如果是string类的,直接相加就可以了:
str = str1 + str2;
如果是字符指针的:
char string[80];
strcpy( string, "Hello world from " );
strcat( string, "strcpy " );
strcat( string, "and " );
strcat( string, "strcat!" );
printf( "String = %s\n", string );
lzy125vc
2003-08-22
打赏
举报
回复
你只要弄清楚两个字符串的基地址,把第二个字符串的基地址连接到第一个字符串的最后一个字符后就行了,很容易实现的.
Dragon132
2003-08-22
打赏
举报
回复
我的程序出了正确结果
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN 1024
int main()
{
char f1[LEN],f2[LEN], f3[LEN];
int loop;
//f1 = (char *)malloc(LEN);
//f2 = (char *)malloc(LEN);
//f3 = (char *)malloc(LEN);
strcpy(f1,"a");
strcpy(f2,"b");
for (loop = 0; loop < 10; loop++)
{
strcpy(f3, f2);
strcat(f3, f1);
strcpy(f1,f2);
strcpy(f2,f3);
//f1 = f2;
//f2 = f3;
}
printf("%s\n", f3);
}
yorky
2003-08-22
打赏
举报
回复
你程序的错误就在于
f1 = f2;
f2 = f3;
这两条语句上。在c语言中,字符串赋值不能这么简单的用赋值号,因为f1,f2,f3都是指针,这样做的结果只是这些指针指向的地址发生了变化,而不是字符数组里边的内容发生了变化。
这样,在循环3次后,f1,f2,f3都指向f3字符串的首地址,此时调用strcat(f3, f1);
便会产生一个访问错误退出。
正确的做法应该如aflyinghorse的做法一样。
刚开始用
strcpy(f1, f2);
strcpy(f2, f3);
语句替换
f1 = f2;
f2 = f3;
后,在执行strcpy(f1, f2);的时候也会产生访问错误。不过这个错误是为什么呢?因为
f1="a"的缘故吗?
aflyinghorse
2003-08-22
打赏
举报
回复
#define LEN 1024
int main()
{
char *f1, *f2, *f3, *temp;
int loop;
f1 = (char *)malloc(LEN);
f2 = (char *)malloc(LEN);
f3 = (char *)malloc(LEN);
temp = (char *)malloc(LEN);
strcpy(f1, "a");
strcpy(f2, "b");
strcpy(temp, f2);
strcpy(f3, "a b ");
for (loop = 0; loop < 5; loop++)
{
strcat(f2, f1);
strcpy(f1, temp);
strcpy(temp, f2);
strcat(f3, f2);
strcat(f3, " ");
}
printf("%s\n", f3);
free(f1);
free(f2);
free(f3);
free(temp);
getchar();
}
hellobcb
2003-08-22
打赏
举报
回复
是大括号。呵呵!
hellobcb
2003-08-22
打赏
举报
回复
哦!少了一个分号。
加载更多回复(17)
强弱电网适配场景下构网 - 跟网逆变器并联系统协同控制逻辑及暂态动态行为研究(Simulink仿真实现)
内容概要:本文系统研究了在强弱电网适配场景下,构网型(GFM)与跟网型(GFL)逆变器并联系统的协同控制逻辑及其暂态动态行为,重点依托Simulink仿真平台构建混合并网系统模型,深入分析两类逆变器在不同电网强度条件下的交互特性、频率响应机制、稳定性表现及抗扰能力。研究涵盖分层控制架构设计、异构控制策略对比、频率扰动响应规律以及多工况暂态性能评估,探讨了GFM与GFL逆变器在功率支撑、电压频率调节和系统稳定性方面的互补性与协同机制,旨在提升高比例新能源接入背景下并网系统的适应性、鲁棒性与动态性能。; 适合人群:具备电力电子、新能源并网、自动控制或电力系统仿真等相关专业知识背景,从事新型电力系统控制、微电网运行、逆变器控制策略研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解构网型与跟网型逆变器在强弱电网
中
的协同工作机理与动态交互特性;②掌握异构逆变器并联系统的建模方法、协同控制策略设计与暂态仿真分析流程;③为高渗透率新能源系统的稳定性分析、控制优化及工程应用提供理论依据和技术参考。; 阅读建议:建议结合Simulink仿真实例进行动手实践,重点关注控制策略的实现细节、参数整定方法及多工况仿真结果的动态响应分析,同时可参考文
中
提及的相关博士论文复现案例以深化对理论机制的理解。
Offline-Task-State-Recovery-Validator-Baseline-Shift-v1.0-原创源码与文档.zip
原创 JavaScript/Node.js 可运行工具源码,包含命令行入口、示例输入输
出
、自动化测试、离线 HTML 报告、README 使用说明与截图。适合 AI 工程、模型评测、数据质量与自动化运维场景,解压后按文档执行 npm test 或 node src/index.js 即可复现;全部文件为本次独立生成,可继续二次开发。
怎样有效推动跨区域产学研合作与资源共享?.docx
怎样有效推动跨区域产学研合作与资源共享?
如何提升区域创新规划的科学性与精准性?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
stm32单片机项目资料课程设计文档
C语言
程序代码原理图电路PCB实例自制太阳能手机充电器设计资料
stm32单片机项目资料课程设计文档
C语言
程序代码原理图电路PCB实例自制太阳能手机充电器设计资料
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章