初学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是从第20位开始,那么a就一定要有19位字符,因为字符串判断结束的标志是遇到空字符,如果你的a不满19位,那么在到第20位之前就遇到空字符自然判断结束。 参考技术A a长度只有12,b却要从20开始,那中间8个char就还是你memset的0,0是字符串结束标志,所以你显示的时候只看到c的第13个char是0,系统就认为字符串结束了,后面就都不管了
你要想看见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语言while,if表达式的问题,请教高手!

一个c语言的问题:怎样比较字符串的大小。。。。请教高手啊。。。。

再次请教c语言高手,为啥我输入n:20的时候 输出的是-2102132736

请教Delphi高手:如何将字符数组初始化

二级C语言知识!高手请教!

请教:C语言中如何将一字符串转换成无符号整型