Arrays 将用户输入存储为字符数组C |分段错误

Arrays 将用户输入存储为字符数组C |分段错误,arrays,c,segmentation-fault,Arrays,C,Segmentation Fault,我试图从用户那里获取输入并将其存储为一个字符数组。我有以下代码,其中函数数组将地址返回到字符数组。然而,我得到了一个核心转储错误,这里发生了什么 //reading and storing input from user as char array int * array(int * r){ int ch; int i; r[10]; printf("enter your name: "); fo

我试图从用户那里获取输入并将其存储为一个字符数组。我有以下代码,其中函数数组将地址返回到字符数组。然而,我得到了一个核心转储错误,这里发生了什么

//reading and storing input from user as char array
int * array(int * r){
        int ch;
        int i;
        r[10];
        printf("enter your name: ");
        for ( i = 0; i < 10; i++){
                r[i] = getc(stdin);
                printf("%c", r[i]);
        }
        return r;
}
//main
int main(void){
        int *p;
        p = array(p);
}
//以字符数组的形式读取和存储来自用户的输入
int*数组(int*r){
int-ch;
int i;
r[10];
printf(“输入您的姓名:”);
对于(i=0;i<10;i++){
r[i]=getc(stdin);
printf(“%c”,r[i]);
}
返回r;
}
//主要
内部主(空){
int*p;
p=阵列(p);
}

我将尝试与您的代码相似

数组可以是char,而不是int和其他许多东西(可以传递len而不是硬编码长度等)。不管怎么说,主要的错误是在没有初始化的情况下传递指针:静态地,正如我所做的,11个位置,一个是空字符;或者动态地使用malloc

if语句仅用于在有人按enter键或流结束时退出循环,我认为这是您想要的行为

#include <string.h>
#include <stdio.h>
//reading and storing input from user as char array
void array(int * r){
        int ch;
        int i;
        //r[10];
        printf("enter your name: ");
        for ( i = 0; i < 10; i++){
                int ch = getc(stdin);
                if ( ch == EOF || ch == '\n' || ch == '\r')
                    break;
                r[i] = ch;
                printf("%c", r[i]);
        }
        r[i] = 0;
        
}
//main
int main(void){
        int p[11];
        array(p);
        printf("\nExit\n");
}
#包括
#包括
//以字符数组的形式读取和存储来自用户的输入
空数组(int*r){
int-ch;
int i;
//r[10];
printf(“输入您的姓名:”);
对于(i=0;i<10;i++){
int ch=getc(标准输入);
如果(ch==EOF | | ch='\n'| | ch=='\r')
打破
r[i]=ch;
printf(“%c”,r[i]);
}
r[i]=0;
}
//主要
内部主(空){
int p[11];
阵列(p);
printf(“\nExit\n”);
}

您从未为
p
分配过任何内存,因此您正在取消对未初始化指针的引用。您应该使用教程来学习如何从C语言的标准输入中读取字符串。您编写的代码没有遵循通常的做法…您说的是“char array”,但您使用的是
int
。语句
r[10]什么都不做。您还声明了一个从未使用过的变量
ch
intp[10]