#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数组(无限制或限制将由用户定义) 我该怎么办?
答案 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);