首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

在循环中,一个char在无赋值情况下改变解决方法

2012-02-09 
在循环中,一个char在无赋值情况下改变在写一个名叫expand的函数,作用是,当输入1-9时,可以输出123456789;再

在循环中,一个char在无赋值情况下改变
在写一个名叫expand的函数,作用是,当输入1-9时,可以输出123456789;再如输入b-k时,可以输出bcdefghijk。

void expand (char target[ ], char result[ ]){
  char c;
  int i, j;
   
  i = j = 0;
  while ((c=target[i++]) != '\0'){
   
  if (target[i] == '-' && target[i+1] >= c){
  i++;
  while (c < target[i]) // expand
  result[j++] = c++;
  }
   
  else if(target[i] == '-'){
  i++;
  while (c > target[i]) // expand
  result[j++] = c--;
  }
   
  printf("mark 1: c is %d\n", c); // 标记1
  }

  printf("mark 2: c is %d\n", c); // 标记2

  result[j++] = c;
  result[j] = '\0';
}


当我利用函数,输入“1-9”时,
得出结果如下


mark 1: c is 57
mark 1: c is 57
mark 2: c is 10
the contents are: 12345678


在这里,c的值在循环中是57,而出了循环之后,没有赋值的情况下,却变成了10,

请教一下为什么?


[解决办法]
因为你在“循环中”和“出循环之后”之间,进行了一次判断while ((c=target[i++]) != '\0'),正因为这次判断c的值从57变为了10(当c的int值为10的时候,char值恰恰为'\0'),所以才跳出了

热点排行