首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将用户输入存储为char数组C|分段错误

问将用户输入存储为char数组C|分段错误
EN

Stack Overflow用户
提问于 2020-12-08 00:06:53
回答 1查看 33关注 0票数 1

我尝试从user获取输入并将其存储为char数组。我有下面的代码,其中的函数数组将地址返回给字符数组。但是,我得到一个核心转储错误,这里发生了什么?

代码语言:javascript
复制
//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);
}
EN

回答 1

Stack Overflow用户

发布于 2020-12-08 00:18:52

我将尝试与您的代码类似。

数组可以是char,而不是int和许多其他东西(您可以传递len而不是硬编码长度等)。无论如何,主要的错误是传递一个指针而没有初始化它:像我已经做的那样,静态地,11个位置,一个是空字符;或者动态地使用malloc。

if语句只是为了退出循环,如果有人按下enter或流结束,我认为这是您想要的行为。

代码语言:javascript
复制
#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");
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65185216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档