kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2011-07-14

Turbo C - 字串陣列參數處理

能夠看到這裡,就是有緣,可以為您省下大半天的時間,說實在的,TC的字串功能不太友善,相信有經驗的人就知道,字串陣列又比較麻煩,常常都耗掉許多時間測試。

字串陣列的問題是出在 "不定長度",它不像數值陣列,每個元素長度固定,字串都是以 '\0' 做結尾的,舉例來說

char a[3];
a[0] <= "不定"
a[1] <= "不定長"
a[2] <= "不定長度"

看了上例知道,字串就是不定長度。能正確使用字串,大約有兩種方法,一是固定長度,二是用指標,其實指標也是固定長度,傳遞位址的長度就是int。下面範例兩種方法都用,先把數字轉成字串再存入陣列之中,因為是要實驗字串,不是數字。

在下面範例中,固定長度的關鍵在於宣告字串陣列的長度 [1]

 void setArr2(char nodeArr[][3] )

這樣才能正確取到陣列元素


void setArr1();
void setArr2();

void main() {
    char msg[50];
    char data[50][3];
    int i;

    clrscr();
    printf("\n\tArray test...\n\n");

    setArr1(&msg);
    printf("%s\n",msg);
    setArr2(&data);
    for(i=0;i<50;i++)printf("data[%d] = %s\t",i,data[i]);
}
/* 用指標 */
void setArr1(char *msgArr){
    strcpy(msgArr,"Hello, here show you how to deal with char[].\n");
}
/* 固定長度 */
void setArr2(char nodeArr[][3]){
    int i;
    char tmp[3];
    for(i=0;i<50;i++){
        itoa(i,tmp,10);
        strcpy(nodeArr[i],tmp);      
    }
}

結果如下


參考資料
[1]  Turbo C 簡介

沒有留言:

張貼留言

請提供您的寶貴意見 ;-)