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输出:分段错误