作者 主題: C...不能用strcat()  (閱讀 8225 次)

0 會員 與 1 訪客 正在閱讀本文。

gwochern

  • 可愛的小學生
  • *
  • 文章數: 25
    • 檢視個人資料
C...不能用strcat()
« 於: 2002-04-12 19:08 »
#include<stdio.h>
#include<string.h>

void main()
{
 char *a,*b,*c;
 b="ABC";
 c="DEF";
 strcat(a,b);
 strcat(a,c);
 printf("%s",a);
}

有沒有辨法不用strcat()或指標,將b,c合并在存到a
就是自己寫string(),我是要用在LINUX上的
我在linux上使用像上面這樣的程式,好像都不能用
有誰能po上來.......謝謝......


barku

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
C...不能用strcat()
« 回覆 #1 於: 2002-04-13 14:53 »

你說的不能用是什麼意思?

基本上,程式裡的 a 你只 declare 他是一個 char 的 pointer,
而沒有給他記憶體的位置.
你必須要 allocate 一段記憶體給他用.

還有要注意的是, 在上面的程式中,
你給 a 的記憶體大小要大於所有你要加起來的字串長度.

夢想^^

at Right, Stay Fit, Die Anyway!!

gwochern

  • 可愛的小學生
  • *
  • 文章數: 25
    • 檢視個人資料
C...不能用strcat()
« 回覆 #2 於: 2002-04-13 17:28 »
引用

在 2002-04-13 14:53, barku 寫了:

你說的不能用是什麼意思?

基本上,程式裡的 a 你只 declare 他是一個 char 的 pointer,
而沒有給他記憶體的位置.
你必須要 allocate 一段記憶體給他用.

還有要注意的是, 在上面的程式中,
你給 a 的記憶體大小要大於所有你要加起來的字串長度.

夢想^^

你的義思是要用
a=malloc(strlen(b)+strlen(c)+7);
這樣才可以.....
但這個函數是我最近才找到的還不太懂.....
可否說明一下......謝謝..................

barku

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
C...不能用strcat()
« 回覆 #3 於: 2002-04-13 23:09 »

malloc 會在 memory 中根據你所要的大小,
劃分出一段連續空間供你使用.
他傳回的值是這段 memory 的起始位置.
所以當你使用 malloc(100) 的時候,
再把傳回值 assign 到 a 的話.
a 基本上是一個 100 bytes 長的 array.
這段空間在程式進行時,會一直保留給 a 使用.
假如你不在需要 a 時,
最好將 a 所佔的空間用 free() 釋放掉,
以免佔用 memory.

供你參考!

夢想^^
at Right, Stay Fit, Die Anyway!!