如何在不使用整数的情况下编写此代码?

时间:2018-03-05 20:18:27

标签: c arrays string while-loop

#include <stdio.h>
#include <string.h>

int main(void)
{
  char alpha[26] = { '0' };
  char nl;

  while (alpha != '0'){
        scanf("%c", &alpha);
        scanf("%c", &nl);
        printf("the character is %c\n", alpha);
 }



int i, j, size;

  for (i=0;i<size;i++){
    for (j=i;j<size;j++){
      if (alpha[i]<alpha[j]){
        Swap(&alpha[i], &alpha[j]);
      }
    }
  }

  printf("%s", alpha);

  return 0;
}

我收到错误&#34;指针和整数之间的比较&#34;在我的while循环中。我希望从文本文件中读取字母表中的每个字母,并在它到达&#34; 0&#34;时停止。在列表的末尾。然后它将按字母顺序排序,从z,y,x开始。等。我怎么写这个,所以它停在&#34; 0&#34;不使用整数? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

alpha [26]是一个包含26个字符的数组,您的while循环总是会覆盖数组的第一个元素(scanf("%c", &alpha);会覆盖每个alpha的第一个元素迭代循环),整个代码将无法正常工作。要访问数组的元素,您可以使用指针或索引,索引更容易,尝试for循环

int i;

for (i = 0; i<26 ; i++)
   {
     if(alpha[i] != '0')
       {
        scanf("%c", &alpha[i]);
        printf("the character is %c\n", alpha[i]);
       }
   }

C: scanf to array

使用指针访问数组请参阅Can i use pointer in scanf to take input in an array?