簡體   English   中英

在字符串數組中插入字符串

[英]Insert strings in array of string

我必須在C的字符串數組中插入字符串。我編寫了一個函數,但是沒有用。 你能幫助我嗎?

當我要打印陣列時,程序崩潰。

謝謝

int leggi(char **a, int *len) {
    int i;
    scanf("%d", len);
    if(*len <= 0) return 1;

    a = (char **) malloc(*len * sizeof(char *));
    if(a == NULL) return 1;

    for( i = 0; i < *len; i++ ) 
    {
        a[i]=(char *)malloc(101*sizeof(char));
        scanf("%s", &a[i]);
    }
    printf("Saved\n");
    return 0;
}

int main() {

    int i, n;
    char **A;

    if(leggi(A, &n)) return 1;
    printf("%d\n",n);




    for( i = 0; i < n; i++ ) 
    {
        printf("printf\n");
        printf("%s\n", &A[i]);
    }
    return 0;
}

scanf("%s", &a[i])更改為scanf("%s", a[i]) ,a [i]是指向字符串中第一個字符的指針,獲取它的地址只會返回指針的地址,而不是實際的第一個字符。 要注意的另一件事是,您實際上並沒有在main函數中修改指針,而是僅在本地函數指針上進行了修改,因此,它不會對main中的指針產生影響。 這是編輯后的版本:

int read(char ***a, int *len) {
    int i;
    scanf("%d", len);
    if( *len <= 0 ) return 1;

    (*a) = (char **) malloc(*len * sizeof(char *));
    if((*a) == NULL) return 1;

    for( i = 0; i < *len; i++ )
    {
        (*a)[i]=(char *)malloc(101*sizeof(char));
        scanf("%s", (*a)[i]);
    }
    printf("Saved\n");
    return 0;
}

int main() {

    int i, n;
    char **A;

    if(read(&A, &n)) return 1;
    printf("%d\n",n);

    for( i = 0; i < n; i++ )
    {
        printf("printf\n");
        printf("%s\n", A[i]);
    }
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM