#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
char *p;
int n;
while(~scanf("%d",&n))
{
p=(char *)malloc(n*sizeof(char));
if(p==NULL)
{
printf("No Enough Memory\n");
exit(0);
}
srand((unsigned)time(0));
int i,index;
for(i=0; i<n; i++)
{
index=rand()%2;
if(index==1) p[i]='A'+rand()%26;
if(index==0) p[i]='a'+rand()%26;
}
printf("%s\n",p);
free(p);
}
return 0;
}
为啥输出结果里会含有一个'?',而且输出有时还会乱码?刚学到这不知道哎
可以参考这个问题的详细论述
一个字符串最后要用 0 结尾,否则就会带出来内存后面的随机字符,例如乱码。
所以你要申请 n + 1 个位置。 然后最后的位置放 0.
p = (char*)malloc(n * sizeof(char) + 1);
如果申请内存成功,就做这个: p[n] = 0;
你可以在结尾输出printf("\0");
谢谢啦(抱拳)