LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 904|回复: 2

能用strcat连接两个这样的变量吗?

[复制链接]
发表于 2003-10-2 21:49:23 | 显示全部楼层 |阅读模式
如果一个变量是数组t1[100],另一个是指针*t2,t2是会随着输入变化的,
应该怎么将这两个联接成t3,使得t3形式上等于t1t2?
发表于 2003-10-2 22:23:28 | 显示全部楼层
可以。不过有个前提。
这里纠正一下,t2 应该是指向某个字符串的指针,该字符串的长度会随着输入变化,而不是该指针长度发生变化。
如果你是静态分配数组的。如:
char t1[100];
定义一个长度为 100 个字节的静态数组。静态的意思就是该数组的长度将不能改变。
要想把 t2 所指的字符串内容嫁接到数组 t1 原包含的字符串尾部,你要保证数组 t1 的大小足够大,能够容纳所有的字符,否则就会出现数组溢出的现象。
如果你能保证,即 t1 原有的字符串长度有个上限。 t2 所指的字符串长度也有上限,两个上限之和小于 100,那么你可以采取静态数组的方式。

  1. #include <stdio.h>
  2. #include <string.h>

  3. int main ()
  4. {
  5.   char t1[100];
  6.   strcpy (t1,"Hello, ");
  7.   
  8.   char *t2 = "world!";
  9.   if ( strlen(t1) + strlen(t2) < sizeof(t1) )
  10.       strcat (t1,t2);
  11.   else {
  12.       printf ("Array overflow!");
  13.       return -1;}

  14.   printf ("%s\n", t1);
  15.   return 0;
  16. }
复制代码

其实为了避免由于长度的限制所带来的刚尬,我们很多时候采用动态分配数组的方式。如果有兴趣,可以查一下 malloc ,free , realloc 几个函数的用法。
 楼主| 发表于 2003-10-3 10:56:11 | 显示全部楼层
太感谢了,详细地很!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表