[英]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.