鱼C论坛

 找回密码
 立即注册
查看: 2186|回复: 18

[已解决]help me

[复制链接]
发表于 2016-5-24 12:22:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
printf("请输入第一个字符串:");
while((a[i]=getchar())!='\n')
    {
        i++;
    };




       printf("请输入第一个字符串:");
        while ((str1[i++] = getchar()) != '\n')
                      ;


这两个的区别是什么啊,求高手解答!!!!
最佳答案
2016-5-25 17:10:25
qq1242009750 发表于 2016-5-25 13:14
printf("请输入第一个字符串:");
while ((str1 = getchar()) != '\n')

就像8楼说的那样,可能是我第一次说的不够清楚,所以调试截图给你看吧,下面有图看到区别了吗,
a例子里面i=4,当符合条件时它没有再去执行i++,所以等于4,
str1例子里i=5,说明当符合条件时它继续执行括号了的i++,所以等于5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-25 17:10:25 | 显示全部楼层    本楼为最佳答案   
qq1242009750 发表于 2016-5-25 13:14
printf("请输入第一个字符串:");
while ((str1 = getchar()) != '\n')

就像8楼说的那样,可能是我第一次说的不够清楚,所以调试截图给你看吧,下面有图看到区别了吗,
a例子里面i=4,当符合条件时它没有再去执行i++,所以等于4,
str1例子里i=5,说明当符合条件时它继续执行括号了的i++,所以等于5

a数组的调试结果

a数组的调试结果
str1.png

评分

参与人数 1荣誉 +3 鱼币 +10 收起 理由
~风介~ + 3 + 10 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-25 17:21:44 | 显示全部楼层
qq1242009750 发表于 2016-5-25 13:14
printf("请输入第一个字符串:");
while ((str1 = getchar()) != '\n')

下面是直接运行的结果,a例子中i=4,就是说运行了5次,分别读取了1 2 3 4 回车键,所以输出的时候是1234,然后输出回车换行,五个字符。
str1例子中i=5说明运行了6次,可是我只输入了1234回车键,因为符合条件时它继续执行了一次括号里的i++,所以输出的时候是1234,然后输出回车换行,再输出一个乱码,因为str1[5]被系统随机分配了一个字符,所以是乱码。。。

a直接运行

a直接运行

str1直接运行

str1直接运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-5-24 15:23:59 | 显示全部楼层
如果两个例子同样输入了:1234一个回车
那么:
第一个例子就只有a[0]到a[4]这五个变量,a[4]存的是回车键。
第二个例子就是str[0]到str[5]这六个变量,str[4]存的是回车,str[5]存的是计算机随机分配的一个数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-24 16:28:39 | 显示全部楼层
夜雨de街灯 发表于 2016-5-24 15:23
如果两个例子同样输入了:1234一个回车
那么:
第一个例子就只有a[0]到a[4]这五个变量,a[4]存的是回车键 ...

能否详细说说
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-24 17:01:45 | 显示全部楼层
为什么我感觉没区别呀。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-24 22:06:14 | 显示全部楼层
如果是
printf("请输入第一个字符串:");
while ((str1[i++] = getchar()) != '\n')
                      ;

第一个字符是存放在str1[1]中吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-25 08:39:10 | 显示全部楼层
qq1242009750 发表于 2016-5-24 22:06
如果是
printf("请输入第一个字符串:");
while ((str1 = getchar()) != '\n')

不是,存在str1[0]里;如果是str1[++i]就是存在str1[1]中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-25 12:04:32 | 显示全部楼层
夜雨de街灯 发表于 2016-5-25 08:39
不是,存在str1[0]里;如果是str1[++i]就是存在str1[1]中

while ((str1[i++] = getchar()) != '\n')

当循环执行的时候
getchar()在键盘缓冲区读取一个ASCLL码,然后把ASCLL码给str1[i++]?? 如果i= 1的话,那么久存放在str1[1]中了

是这样吗,求解不懂啊

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-25 12:34:32 | 显示全部楼层
两个的区别
第一个当读取到'/n'的时候,循环结束,i不会再加一;
第二个读取到'/n'的时候,i还会再加一。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-25 13:07:30 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-5-25 13:14:40 | 显示全部楼层
printf("请输入第一个字符串:");
while ((str1[i++] = getchar()) != '\n')

不明白这个语句怎么执行!!!!!!,求分析
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-25 17:23:07 | 显示全部楼层

看楼上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-26 22:39:12 | 显示全部楼层
夜雨de街灯 发表于 2016-5-25 17:21
下面是直接运行的结果,a例子中i=4,就是说运行了5次,分别读取了1 2 3 4 回车键,所以输出的时候是1234 ...

好像懂了点了,请问怎么把C语言转换成汇编语言。我想看看汇编,可能我会有更好的理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-27 08:14:34 | 显示全部楼层
qq1242009750 发表于 2016-5-26 22:39
好像懂了点了,请问怎么把C语言转换成汇编语言。我想看看汇编,可能我会有更好的理解。

在调试哪里可以看到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-27 11:24:32 | 显示全部楼层
夜雨de街灯 发表于 2016-5-27 08:14
在调试哪里可以看到

请问您用的是什么编译器呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-30 09:47:38 | 显示全部楼层
qq1242009750 发表于 2016-5-27 11:24
请问您用的是什么编译器呢?

VC++6.0和Visual Studio 2015
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-30 13:43:49 | 显示全部楼层
夜雨de街灯 发表于 2016-5-25 17:21
下面是直接运行的结果,a例子中i=4,就是说运行了5次,分别读取了1 2 3 4 回车键,所以输出的时候是1234 ...

额,乱码不是因为str1没有初始化吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-30 16:27:00 | 显示全部楼层
skyseawing 发表于 2016-5-30 13:43
额,乱码不是因为str1没有初始化吗?

就是因为没有初始化,所以计算机随便给一个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 04:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表