【问题标题】:Cant escape an ascii character in c无法在c中转义ascii字符
【发布时间】:2015-07-19 06:46:34
【问题描述】:

嘿,伙计们实际上是 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

感谢您的帮助

【问题讨论】:

  • 如果只有 4 个值,请不要对 5 个值进行排序。

标签: c


【解决方案1】:
char values[4] = "mmfa";

字符串以\0 结尾,因此将数组大小更改为char values[5]

注意index 5null 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 .

【讨论】:

  • 然后我得到了一个小盒子,就像程序前面一样
  • 我做了这段代码,但它给了我一个小符号,比如程序前面的框'
  • @babxpox 请显示函数 qsort 的定义。
  • @babxpox 请看上面,现在你的代码给出了正确的输出。
  • 但是小符号还在..:o
【解决方案2】:

像这样声明char数组

char values[] = "mmfa";

并将qsort 调用更改为

qsort(values, strlen(values), sizeof(char), cmpfunc);

输出

After sorting the list is: 
a f m m 

查看演示http://ideone.com/v3r9ir

【讨论】:

    猜你喜欢
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多