急救:c语言中字符串连接出问题,在线等待

HitXU 2003-08-22 11:52:49
字符串(i) = 字符串(i-1) + 字符串(i-2)

看起来很简单,可是我写了几行代码总是不对。

请大侠指点怎么写

...全文
1738 37 打赏 收藏 转发到动态 举报
写回复
用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)
内容提要 本书全面深入地介绍了MySQL的功能,主要内容包括MySQL、PHP、Apache、Perl等组件的安装与功能简介,mysql等一些重要系统管理工具和用户操作界面的使用,MySQL数据库系统设计的基础知识与用不同语言设计MySQL数据库的过程,以及SQL语法、工具、选项、API应用指南,最大限度地帮助读者更快地学习和掌握MySQL数据库系统的设计和使用。本书覆盖了MySQL 5.0,讨论了新的程序设计接口(如PHP 5里的mysqli)和新的系统管理工具。 本书是MySQL数据库管理员和开发人员的必备参考书。 目录 第一部分 入门  第1章 什么是MySQL   1.1 什么是数据库   1.2 MySQL   1.3 MySQL的不足   1.4 MySQL的版本编号   1.5 MySQL的许可证   1.6 MySQL软件的替代品   1.7 小结  第2章 测试环境   2.1 是Windows还是UNIX/Linux   2.2 在Windows系统上安装MySQL和相关软件   2.3 在SUSE Linux 9.3系统上安装MySQL和相关软件   2.4 在Red Hat Enterprise Linux 4系统上安装MySQL和相关软件   2.5 编译MySQL软件的开发者版本(Linux)   2.6 配置Apache   2.7 配置PHP   2.8 配置MySQL  第3章 初级案例研究:MySQL+PHP   3.1 概述   3.2 数据库的开发   3.3 调查问卷   3.4 问卷调查结果的处理和显示   3.5 改进意见 第二部分 管理工具和用户操作界面  第4章 mysql、mysqladmin和mysqldump   4.1 mysql   4.2 mysqladmin   4.3 mysqldump  第5章 MySQL Administrator和MySQL Query Browser   5.1 安装   5.2 与MySQL服务器建立连接   5.3 MySQL Administrator   5.4 MySQL Query Browser  第6章 phpMyAdmin   6.1 phpMyAdmin的安装与配置   6.2 用户管理,保护MySQL   6.3 创建和编辑数据库   6.4 查看、插入和编辑数据   6.5 执行SQL命令   6.6 导入和导   6.7 服务器管理   6.8 辅助功能  第7章 Microsoft Office和OpenOffice/StarOffice   7.1 安装Connector/ODBC   7.2 Microsoft Access   7.3 Microsoft Excel   7.4 安装Connector/J   7.5 OpenOffice/StarOffice Base   7.6 OpenOffice/StarOffice的Data Source视图 第三部分 基础知识  第8章 数据库设计概论   8.1 参考读物   8.2 数据表类型   8.3 MySQL数据类型   8.4 数据库设计技巧   8.5 规范化   8.6 层次关系的处理   8.7 关系   8.8 主键和外键   8.9 索引   8.10 视图   8.11 示例数据库mylibrary(图书管理)   8.12 示例数据库myforum(网上论坛)   8.13 示例数据库exceptions(用于特殊情况的测试)  第9章 SQL语言入门   9.1 简介   9.2 简单查询(SELECT)   9.3 对查询结果进行排序(ORDER BY)   9.4 筛选数据记录(WHERE,HAVING)   9.5 涉及多个数据表的关联查询(LEFT/RIGHT JOIN)   9.6 合并查询结果(UNION)   9.7 分组查询,统计函数(GROUP BY)   9.8 修改数据(INSERT、UPDATE和DELETE)   9.9 创建数据表、数据库和索引  第10章 SQL解决方案   10.1 字符串   10.2 日期和时间   10.3 ENUM和SET数据类型   10.4 变量与条件表达式(IF、CASE)   10.5 在数据表间复制数据   10.6 统计报表   10.7 子查询   10.8 保证数据的一致性   10.9 找冗余的数据记录   10.10 数据表设计方案的改进   10.11 对前n条或后n条记录进行处理   10.12 以随机方式选择数据记录   10.13 全文索引   10.14 锁定   10.15 事务  第11章 访问权限与信息安全   11.1 简介   11.2 急救   11.3 访问控制机制的内部工作原理   11.4 访问权限的设置工具   11.5 MySQL 4.1版本开始的安全密码验证   11.6 建立连接问题   11.7 系统安全性  第12章 GIS函数   12.1 GIS数据格式   12.2 MySQL的GIS实现   12.3 SQL示例(冰川数据库)   12.4 SQL示例(opengeodb数据库)  第13章 存储过程和触发器   13.1 为什么要使用存储过程和触发器   13.2 初识SP   13.3 SP的实现   13.4 SP的管理   13.5 SP的语法和语言元素   13.6 SP应用示例   13.7 触发器  第14章 管理与服务器配置   14.1 基础知识   14.2 备份   14.3 数据库的迁移   14.4 导和导入文本文件   14.5 日志   14.6 镜像机制   14.7 管理MyISAM数据表   14.8 InnoDB数据表的管理   14.9 MySQL服务器的优化   14.10 ISP数据库管理 第四部分 程序设计  第15章 PHP   15.1 mysql功能模块   15.2 mysqli的类、方法和属性   15.3 把数据库功能打包为一个类   15.4 把SELECT查询结果显示为一个表格   15.5 字符串、日期、时间、BLOB和NULL   15.6 向关联数据表插入新数据记录   15.7 处理来自HTML表单的输入数据   15.8 分页显示查询结果   15.9 处理层次化数据   15.10 速度优化   15.11 Unicode   15.12 二进制数据(BLOB)和图像   15.13 存储过程   15.14 SP Administrator  第16章 Perl   16.1 编程技巧   16.2 示例:删除无效的数据记录(mylibrary)   16.3 CGI示例:图书管理(mylibrary)   16.4 CGI Unicode示例  第17章 Java(JDBC和Connector/J)   17.1 基础知识   17.2 程序设计技巧  第18章 C语言   18.1 MySQL C API(libmysqlclient)   18.2 Hello,World   18.3 与MySQL服务器建立连接   18.4 执行SQL命令   18.5 处理二进制数据和特殊字符   18.6 错处理  第19章 Visual Basic 6/VBA   19.1 基础知识和术语   19.2 Connector/ODBC选项   19.3 ADO程序设计与Visual Basic 6/VBA   19.4 与MySQL服务器建立连接   19.5 转换器:从Microsoft SQL Server到MySQL   19.6 VBMySQLDirect  第20章 Visual Basic .NET和C#   20.1 ADO .NET与MySQL之间的通信   20.2 编程技巧   20.3 示例:把新图书记录存入mylibrary数据库   20.4 示例:把图像文件存入和读一个BLOB数据列 第五部分 参考资料  第21章 SQL语法指南   21.1 语法   21.2 操作符   21.3 变量和常数   21.4 MySQL数据类型   21.5 SQL命令汇总表(按功能分类)   21.6 SQL命令指南(按字母表顺序排列)   21.7 SQL函数指南   21.8 GIS数据类型与GIS函数   21.9 与存储过程和触发器有关的语言元素  第22章 MySQL工具和选项   22.1 概述   22.2 通用选项和配置文件   22.3 mysqld程序(服务器)   22.4 mysqld_safe脚本(启动MySQL服务器)   22.5 mysql_install_db脚本(安装mysql数据库)   22.6 mysql_fix_privileges脚本(更新mysql数据库)   22.7 mysql_fix_extensions脚本(重命名MyISAM文件)   22.8 mysql程序(SQL命令解释器)   22.9 mysqladmin程序(日常管理)   22.10 mysqldump程序(数据的备份/导)   22.11 mysqlimport程序(文本导入、批量导入)   22.12 mysqlshow程序(查看信息)   22.13 myisamchk程序(修复MyISAM文件)   22.14 myisampack程序(压缩MyISAM文件)  第23章 MySQL API应用指南   23.1 PHP API(mysql接口)   23.2 PHP API(mysqli接口)   23.3 Perl DBI   23.4 JDBC(Connector/J)   23.5 ADO .NET(Connector/Net)   23.6 C API 第六部分 附录  附录A 术语解释  附录B 本书的配套示例文件  附录C 参考书目
内容提要 -------------------------------------------------------------------------------- 本书全面深入地介绍了MySQL的功能,主要内容包括MySQL、PHP、Apache、Perl等组件的安装与功能简介,mysql等一些重要系统管理工具和用户操作界面的使用,MySQL数据库系统设计的基础知识与用不同语言设计MySQL数据库的过程,以及SQL语法、工具、选项、API应用指南,最大限度地帮助读者更快地学习和掌握MySQL数据库系统的设计和使用。本书覆盖了MySQL 5.0,讨论了新的程序设计接口(如PHP 5里的mysqli)和新的系统管理工具。   本书是MySQL数据库管理员和开发人员的必备参考书。 目录 -------------------------------------------------------------------------------- 第一部分 入门  第1章 什么是MySQL   1.1 什么是数据库   1.2 MySQL   1.3 MySQL的不足   1.4 MySQL的版本编号   1.5 MySQL的许可证   1.6 MySQL软件的替代品   1.7 小结  第2章 测试环境   2.1 是Windows还是UNIX/Linux   2.2 在Windows系统上安装MySQL和相关软件   2.3 在SUSE Linux 9.3系统上安装MySQL和相关软件   2.4 在Red Hat Enterprise Linux 4系统上安装MySQL和相关软件   2.5 编译MySQL软件的开发者版本(Linux)   2.6 配置Apache   2.7 配置PHP   2.8 配置MySQL  第3章 初级案例研究:MySQL+PHP   3.1 概述   3.2 数据库的开发   3.3 调查问卷   3.4 问卷调查结果的处理和显示   3.5 改进意见 第二部分 管理工具和用户操作界面  第4章 mysql、mysqladmin和mysqldump   4.1 mysql   4.2 mysqladmin   4.3 mysqldump  第5章 MySQL Administrator和MySQL Query Browser   5.1 安装   5.2 与MySQL服务器建立连接   5.3 MySQL Administrator   5.4 MySQL Query Browser  第6章 phpMyAdmin   6.1 phpMyAdmin的安装与配置   6.2 用户管理,保护MySQL   6.3 创建和编辑数据库   6.4 查看、插入和编辑数据   6.5 执行SQL命令   6.6 导入和导   6.7 服务器管理   6.8 辅助功能  第7章 Microsoft Office和OpenOffice/StarOffice   7.1 安装Connector/ODBC   7.2 Microsoft Access   7.3 Microsoft Excel   7.4 安装Connector/J   7.5 OpenOffice/StarOffice Base   7.6 OpenOffice/StarOffice的Data Source视图 第三部分 基础知识  第8章 数据库设计概论   8.1 参考读物   8.2 数据表类型   8.3 MySQL数据类型   8.4 数据库设计技巧   8.5 规范化   8.6 层次关系的处理   8.7 关系   8.8 主键和外键   8.9 索引   8.10 视图   8.11 示例数据库mylibrary(图书管理)   8.12 示例数据库myforum(网上论坛)   8.13 示例数据库exceptions(用于特殊情况的测试)  第9章 SQL语言入门   9.1 简介   9.2 简单查询(SELECT)   9.3 对查询结果进行排序(ORDER BY)   9.4 筛选数据记录(WHERE,HAVING)   9.5 涉及多个数据表的关联查询(LEFT/RIGHT JOIN)   9.6 合并查询结果(UNION)   9.7 分组查询,统计函数(GROUP BY)   9.8 修改数据(INSERT、UPDATE和DELETE)   9.9 创建数据表、数据库和索引  第10章 SQL解决方案   1

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧