无法逃避c

时间:2015-07-19 06:46:34

标签: c

嘿伙计们实际上是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寻求帮助

2 个答案:

答案 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