簡體   English   中英

將字符串數組作為參數傳遞給 Function

[英]Passing Array of String as Argument to Function

我正在嘗試將字符串數組傳遞給 function 然后在那里打印。 但它給出了分段錯誤。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char *str[2];
    for(int i=0;i<2;i++) {
            scanf("%s",(str+i));
    }
    display(str);
}

void display(char **p)
{
    for(int i=0;i<2;i++) {
            printf("%s \n",p[i]);
    }
}

我認為問題在於您沒有為您的列表分配 memory 。 這是我制作的示例代碼。

#include <stdio.h>
#include<stdlib.h>
#include<string.h>

#define LIST_SIZE 2
#define MAX_WORD 100

void display(char**);

int main() {
    char buffer[100];
    char** list;
    int i;
    int n;

    // allocate
    list = (char**)malloc(sizeof(char*) * LIST_SIZE);

    for(i = 0; i < LIST_SIZE; i++) {
        scanf("%99s",buffer);
        n = strlen(buffer);
        list[i] = (char*)malloc(sizeof(char) * n);
        strcpy(list[i], buffer);
    }

    display(list);

    return 0;
}

void display(char** str) {
    int i;
    printf("-- output ---\n");
    for(i = 0; i < LIST_SIZE; i++) {
        printf("%s\n", str[i]);
    }
}

我使列表僅分配單詞所需的空間。 如果要修復,則不需要緩沖區和 strcpy。

對於初學者,您需要在“顯示”function...中進行以下更改。

printf("%s \n",p+i);

此外,“顯示”function 需要放在“主”上方,或者您需要為 function 聲明原型。

那這個呢:

void display(char * p[])

這樣你就可以傳遞參數

暫無
暫無

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

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