嘿伙计们实际上是c编程的新手..我有一个char数组,我正在尝试将元素保持在一个顺序中。我已经完成了它,但是当我打印数组的元素时,我的代码中会出现一个额外的字符ÿ
。
我的代码
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
char values[4] = "mmfa";
int cmpfunc (const void * a, const void * b)
{
return(*(char*)a - *(char*)b);
}
int main()
{
int n;
qsort(values, 5, sizeof(char), cmpfunc);
printf("\nAfter sorting the list is: \n");
for( n = 0 ; n < 5; n++ )
{
printf("%c ", values[n]);
}
return(0);
}
当我打印这个时,我得到结果ÿ a f m m
。我需要删除ÿ
..我已经尝试通过\
逃避aray但是它没有成功。所以如何从结果中删除ascii code
。
Thanx寻求帮助
答案 0 :(得分:0)
char values[4] = "mmfa";
字符串以\0
终止,因此您的数组大小为char values[5]
。
注意index 5
适用于null character
。
for( n = 0 ; n < 5; n++ )
{
printf("%c ", values[n]);
}
在这个循环中n
一直到4
,你的数组直到3
。记住数组索引以0
开头。
同时调用qsort
参数应该是 -
qsort(values, 4, sizeof(char), cmpfunc);
^because number of elements in array is 4 not 5 .
答案 1 :(得分:0)
像这样声明char数组
y[]
并将char values[] = "mmfa";
调用更改为
qsort
<强>输出强>
qsort(values, strlen(values), sizeof(char), cmpfunc);
请参阅演示http://ideone.com/v3r9ir。