黑马程序员技术交流社区

标题: IOS的C语言基础 [打印本页]

作者: HHE_johnson    时间: 2015-5-7 16:20
标题: IOS的C语言基础
这是我的一个C程序,运行的环境是VC++6.0;程序的目的是实现键盘输入N个16进制的数字,然后转成10进制输出。现在问题是程序按要紧输入,但是没有结果输出,请哪位帮分析一下。谢谢!
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int ch;
  5.         int str[1000];
  6.         int i,j;
  7.         printf("请输入N个十六进制数,数字之间用逗号隔开,输入反斜杠0结束:\n");
  8.         while( str[i] != '\0' )
  9.         {
  10.                 scanf("%x ",&ch);
  11.                 str[i++]=ch;
  12.         }
  13.         for( j=0;j<i;j++)
  14.         {
  15.                 printf("%d ",str[j]);
  16.         }
  17.         printf("\n");
  18.         return 0;
  19. }
复制代码

作者: 13673696542    时间: 2015-5-7 17:50
没测试你的代码,不过你的变量为什么没有初始化就使用呀?
作者: mony    时间: 2015-5-7 20:47
str[i]是什么东东?i在没有赋初始值的时候,什么情况都有
作者: cui0wei0    时间: 2015-5-8 00:37
ch是整型, 你用它接收有逗号的输入么? 这个怎么判断啊? C语言都忘了好多了, 是不是要用字符串接收再转成int啊?
作者: Heartbeats、    时间: 2015-5-8 07:31
卡不懂的说、、、、
作者: ★W...    时间: 2015-5-8 08:18
同样不明白
str[i]
是个什么东西
作者: wangzhewjl    时间: 2015-5-8 08:32
本帖最后由 wangzhewjl 于 2015-5-8 08:44 编辑

首先整型数组,接收逗号 ‘\0’都会转成ASCii值  ,然后你的i变量没有初始化。 你输入给电脑的东西是字符串 字符串本身就是‘\0’结尾,建议你改成字符数组来接收输入的内容,然后判断。
作者: HHE_johnson    时间: 2015-5-8 11:04
13673696542 发表于 2015-5-7 17:50
没测试你的代码,不过你的变量为什么没有初始化就使用呀?

我初始化了还是不行,说明这个不初始化也没问题的,不过代码逻辑不对了。这样的输入方式也是不对的
作者: HHE_johnson    时间: 2015-5-8 11:08
mony 发表于 2015-5-7 20:47
str是什么东东?i在没有赋初始值的时候,什么情况都有

str是把scanf输入的值赋给数组,然后拿数组去判断最后输入的是不是结束符,不过这样的话逻辑上有问题,while里面应该用ch来判断,而不用str;不过即使是这样,结果还是不行。
作者: HHE_johnson    时间: 2015-5-8 11:11
wangzhewjl 发表于 2015-5-8 08:32
首先整型数组,接收逗号 ‘\0’都会转成ASCii值  ,然后你的i变量没有初始化。 你输入给电脑的东西是字符串  ...

好的,我试一下,你说的很有道理!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2