| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1012 人关注过本帖
标题:写了一个测试strcat函数的例子,感觉太啰嗦了,可是又感觉哪条语句都是必须 ...
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:10 回复次数:14 
写了一个测试strcat函数的例子,感觉太啰嗦了,可是又感觉哪条语句都是必须要有的
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{  
   char *s1;
   char *s2;
   char *s3;
   s1="abcd";
   s2="1234";
   int len=(int)strlen(s1)+(int)strlen(s2);
   s3=(char*)malloc(len);
   for(int i=0;i<len;i++) s3[i]='\0';
   strcat(s3,s1);
   strcat(s3,s2);
   printf("连接后字符串是:%s  连接后字符串长度为:%d\n",s3,int(strlen(s3)));
}
搜索更多相关主题的帖子: 测试 
2012-11-14 11:04
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:0 
估计比较闲
2012-11-14 11:24
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
以下是引用wp231957在2012-11-14 11:04:25的发言:

#include
#include
#include
void main()
{   
   char *s1;
   char *s2;
   char *s3;
   s1="abcd";
   s2="1234";
   int len=(int)strlen(s1)+(int)strlen(s2);
   s3=(char*)malloc(len);
   for(int i=0;i
void main()

尽量不要这么写 显得太业余
2012-11-14 11:29
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
int(strlen(s3))

还有 这个能编译过么、、、
2012-11-14 11:32
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用zklhp在2012-11-14 11:32:45的发言:

int(strlen(s3))

还有 这个能编译过么、、、

gcc -Wall a.c -std=c99
a.c: In function 'main':
a.c:16:58: error: expected expression before 'int'


哈哈 gcc报错了
2012-11-14 11:34
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:5 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    const char *s1 = "abcd"; //静态字符串尽量使用const
    const char *s2 = "1234";
    char *s3 = (char *)calloc(strlen(s1) + strlen(s2) + 1, sizeof(char)); // calloc分配的空间可以自动清0,同时多分配一个字符的空间   
    strcat(s3, s1);
    strcat(s3, s2);
    printf("连接后字符串是:%s  连接后字符串长度为:%d\n",s3,strlen(s3));
    free(s3); //别忘了释放内存空间。
    return 0;
}

[ 本帖最后由 newdos 于 2012-11-14 12:47 编辑 ]
2012-11-14 12:44
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:0 
CLib_cn.chm (121.95 KB)

C语言标准的库函数很多,手册是必备的东西。上面也有很多的代码示例参考。
2012-11-14 12:50
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
多谢NEWDOS兄


z版,我没有gcc 但是我那样写  在vc60下可以通过  
如果不强制转换  反而会有一个警告 strlen 返回的是一个无符号型整型

DO IT YOURSELF !
2012-11-14 13:43
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用zklhp在2012-11-14 11:29:30的发言:

void main()

尽量不要这么写 显得太业余
int main() return 0;
对吧

DO IT YOURSELF !
2012-11-14 13:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用wp231957在2012-11-14 13:43:04的发言:

多谢NEWDOS兄


z版,我没有gcc 但是我那样写  在vc60下可以通过  
如果不强制转换  反而会有一个警告 strlen 返回的是一个无符号型整型

返回无符号型整数,你就在输出格式串中调整,用%u,而不是%d,这才是正逻辑,无缘无故把应该是无符号的数据强制理解为有符号干嘛呢,当然别扭啦。大量使用类型转换的代码,往往是设计不良的代码,这是编程书上有教的。

[ 本帖最后由 TonyDeng 于 2012-11-14 19:01 编辑 ]

授人以渔,不授人以鱼。
2012-11-14 13:45
快速回复:写了一个测试strcat函数的例子,感觉太啰嗦了,可是又感觉哪条语句都是 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028982 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved