我尝试从user获取输入并将其存储为char数组。我有下面的代码,其中的函数数组将地址返回给字符数组。但是,我得到一个核心转储错误,这里发生了什么?
//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);
}发布于 2020-12-08 00:18:52
我将尝试与您的代码类似。
数组可以是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");
}https://stackoverflow.com/questions/65185216
复制相似问题