使用带有char数组的指针的getchar

时间:2014-10-09 14:05:03

标签: c arrays pointers for-loop getchar

#include<stdio.h>

int main(){
  char *q;
  int i=0;
  do{
    *(q+i)=getchar();
    i++;
  }while(*(q+i)!=48);

  int j=0;

  for(;j<i;j++)
    printf("%c",*(q+j));
}

我尝试以这种方式使用。我可以编译。然而,它不起作用。 我的目标是我想获得char数组(无限制或限制将由用户定义) 我该怎么办?

2 个答案:

答案 0 :(得分:2)

你应该读一本关于C的书。

你只是写入随机内存,导致未定义的行为。

你必须分配内存,你不能只通过非初始化指针写入!

例如,make it:

char buffer[1024], *q = buffer;

然后确保你不要在循环内超越。

另外,将*(p + i) p[i] 表示完全相同的内容并且更容易阅读时,将访问权限写为getchar()是没有意义的。

最后,请记住技术上int会返回EOF,因为它可以返回不是字符的{{1}}。

答案 1 :(得分:0)

指针的第一个allocate memory * q

  include<stdio.h>

  int main()
 {
    int a;

    char b[100];
    int i=0;
    char *p=b;
   while((a=getchar())!=EOF)
 {
    p[i++]=a;
 }
 p[i+1]='\0';
printf("%s",b);

}

您也可以尝试堆内存分配

char *p=(char*)malloc(40);