初学C语言,请教高手字符串拼接的问题。要求是将a与b拼接到c,a占前20位,b从第20位开始。我的代码如下:
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学C语言,请教高手字符串拼接的问题。要求是将a与b拼接到c,a占前20位,b从第20位开始。我的代码如下:相关的知识,希望对你有一定的参考价值。
char a[12+1];
char b[4+1];
char c[40+1];
memset(c,0x00,sizeof(c));
strcpy(c,a);
strncpy(c+20,b,4);
可c的结果只显示a,b没拼上。
我memcpy,strncpy试了好久都没过。
为什么呢,应该怎样修改才能实现呢?
求高手回答!
你要想看见b,可以把中间8个char改称空格,也就是在你现在这3行语句后面再加上
memset(c+12, 0x20, 8); 参考技术B 经过语句memset(c,0x00,sizeof(c));设置后,数组c中的所有单元均为0,与'\0'同值。
strcpy(c,a);后,如果a不满20个(含'\0')字符,则c中单元c[20]前面必有'\0'字符,所以显示字符串c时,'\0'后面的字符无法得到显示,外观上好像只有a的内容,其实,b的内容仍在字符数组中。你确保a的长度超过20吗?追问
a的长度不会超过20,怎样才能避免无法显示的问题呢?
追答既然不超过20,则可以用函数strcat(c,b);,而不使用strncpy();,就不会出现以上的问题了。
参考技术C 因为memset(c,0x00,sizeof(c));使c存储的都是零a值占了12个字符 第13个字符是0
c的字符串是已0为结尾了 所有到了13个字符就结束了
其实你已经拼接上了 你可以打印一下c+20试试
想显示出来 你可以吧a到b间的间隙用空格之类的 不用0填充 参考技术D #include <stdio.h>
int main()
char a[12+1];
char b[4+1];
char c[40+1];
strcpy(a , "hello" );
strcpy( b , "Mike" );
sprintf( c , "%-20s%s" , a,b ); //a占前20位,左对齐,不足位后补空格
printf("c=%s\n",c );
return 0;
希望帮到你。本回答被提问者采纳
C语言问题(1分钟内随机产生1000个随机数),请教!
有个C语言的问题。寻高手指点。课题是编一个程序 功能是让程序1分钟内随机产生1000个随机数。这个怎么做?谢谢。(我把分全顶了求解)
这1000个随机数要在1000-2000的范围内。
补充一下,不管用什么,只要实现就行!
3楼的程序可能是理解我的意思错了,我是想这个程序耗完这1分钟,并且在时间消耗过程中随机产生1000个1000-2000当中的随即数。
你要控制时间可以用GetTickCount返回windows运行的时间(毫秒)
计算时间间隔来控制
#include <windows.h>
int main()
long lStart = GetTickCount(); //例如123456000
//计算1000个随机数
long lEnd = GetTickCount(); //例如123456333
while (lEnd - lStart <= 1000)
lEnd = GetTickCount();
//到这里就运行了1S //123457000
参考技术A 哦,还加上了时间限制啊,不知道能否用系统自带的随机函数啊?
想来是不让用的了!你自己也可以想办法啊,把系统的时间调出来,从时间上想办法了. 参考技术B #include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main()
int i;
srand((unsigned)time(NULL));
for(i = 0; i < 1000; ++i)
printf("%d\n", rand());
以上是关于初学C语言,请教高手字符串拼接的问题。要求是将a与b拼接到c,a占前20位,b从第20位开始。我的代码如下:的主要内容,如果未能解决你的问题,请参考以下文章
一个c语言的问题:怎样比较字符串的大小。。。。请教高手啊。。。。