我正在尝试接受用户的输入并将其存储为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);
}
我会尽量与您的代码相似。
数组可以是char,而不是int和许多其他东西(您可以传递len而不是硬编码长度等(。不管怎么说,主要的错误是在没有初始化的情况下传递指针:像我所做的那样,静态地,11个位置,一个是空字符;或者动态地使用malloc。
if语句只是用于在有人按下回车键或流结束时退出循环,我认为这是您想要的行为。
#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("nExitn");
}