Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将字符串数组作为参数传递给函数_C - Fatal编程技术网

C 将字符串数组作为参数传递给函数

C 将字符串数组作为参数传递给函数,c,C,我试图将字符串数组传递给函数,然后在那里打印它。但这是一个错误 #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)

我试图将字符串数组传递给函数,然后在那里打印它。但这是一个错误

#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]);
    }
}
#包括
#包括
#包括
int main()
{
char*str[2];

对于(inti=0;i我认为问题在于您没有为列表分配内存

#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]);
    }
}

#包括
#包括
#包括
#定义列表大小2
#定义最大单词100
无效显示(字符**);
int main(){
字符缓冲区[100];
字符**列表;
int i;
int n;
//分配
列表=(char**)malloc(sizeof(char*)*列表大小);
对于(i=0;i

我制作的列表只分配单词所需的空间。如果您想要修复,则不需要缓冲区和strcpy。

我认为问题在于您没有为列表分配内存。下面是我制作的示例代码

#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]);
    }
}

#包括
#包括
#包括
#定义列表大小2
#定义最大单词100
无效显示(字符**);
int main(){
字符缓冲区[100];
字符**列表;
int i;
int n;
//分配
列表=(char**)malloc(sizeof(char*)*列表大小);
对于(i=0;i

我列出的列表只分配单词所需的空间。如果您想要修复,您不需要缓冲区和strcpy。

对于初学者,您需要在“显示”功能中进行以下更改

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

此外,“显示”功能需要置于“主”之上,或者您需要声明该功能的原型。

对于初学者,您需要对“显示”功能进行以下更改

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

此外,“display”函数需要放在“main”之上,或者您需要为该函数声明一个原型。

您没有为字符串分配任何内存。您显示的代码中没有定义“strings”。事实上,C不知道数据类型“string”。有不同的方法分配内存,就像数组一样使用C语言中的“字符串”。您没有显示要使用的字符串。将“字符串”数组传递给函数的方式取决于它是如何分配的。由于所有这些,您目前的问题无法回答。
str[i]=malloc(100);scanf(“%s”,str[i]”)
使用
中的
进行
循环我正在从用户获取输入,希望将该字符串数组传递给函数,然后打印它。预期结果:输入:String1 String2输出:String1 String2实际结果:输入:String1 String2输出:分段错误您没有为字符串分配任何内存。没有“字符串”在您显示的代码中定义。事实上,C不知道数据类型“string”。有不同的方法分配内存以像C中的“string”数组一样使用。您没有显示要使用的。传递“string”数组的方法函数的分配取决于它是如何分配的。由于所有这些原因,无法回答您目前的问题。
str[i]=malloc(100);scanf(“%s”,str[i]”)
使用
中的
进行
循环我正在从用户获取输入,希望将该字符串数组传递给函数,然后打印它。预期结果:输入:String1 String2输出:String1 String2实际结果:输入:String1 String2输出:分段错误