读取掉第一个scanf丢弃的字符。
参考链接:
ASCII码对照表-完整ASCII码表-我就查查询
C++中 qsort 用法_囧九的博客-CSDN博客_c++ qsort
修改如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int cmp(const void *a,const void *b){
return (*(char*)a-*(char*)b);
}
int main(void){
int num=0;
int i=0;
printf("input the number of character\n");
scanf("%d",&num);
while(getchar()!='\n')
continue;
char *p =(char *) malloc(num*sizeof(char));
//printf("num=%d\n",num);
if(p==NULL){
printf("%s\n",strerror(errno));
}
for(i=0;i<num;i++){
scanf("%c",(p+i));
}
// printf("输入的字符是:");
// for(i=0;i<num;i++){
// printf("i=%d,%c\n",i,*(p+i));
// }
// printf("\n");
qsort(p,num,sizeof(char),cmp);
for(i=0;i<num;i++){
printf("%c",p[i]);
}
free(p);
p=NULL;
return 0;
}