鱼C论坛

 找回密码
 立即注册
查看: 2303|回复: 5

[已解决]gets或者字符串下标怎么用

[复制链接]
发表于 2017-11-24 21:17:53 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lwhnx 于 2017-11-24 21:18 编辑

比如S1E13 动动手第一题 换大小写 我自己用getchar与putchar可以运行 如下:
#include <stdio.h>

int main()
{
        char ch;
        int i;
        printf("请输入一行英文句子:");
        for(i=0;(ch=getchar())!='\n';i++)
        {
                if('A'<=ch && ch<='Z')
                {
                        ch=ch + 32;
                }
                else if('a'<=ch && ch<='z')
                {
                        ch=ch - 32;
                }
                
                putchar(ch);
         } 
        putchar('\n');
        
        return 0;
}
但是我用下标 运行不了 问题在哪 如下:
#include <stdio.h>

int main()
{
        char ch[100];
        int i;
        printf("请输入一行英文句子:");
        gets(ch);
        for(i=0;ch[i]!='\n';i++)
        {
                if('A'<=ch[i] && ch[i]<='Z')
                {
                        ch[i]=ch[i] + 32;
                }
                else if('a'<=ch[i] && ch[i]<='z')
                {
                        ch[i]=ch[i] - 32;
                }
                
         } 
        printf("%c\n", ch);
        
        return 0;
}
最佳答案
2017-11-25 11:04:36
看到楼主的例子,想和楼主说说 getchar 和 gets 的区别:

getchar:从输入缓冲区中读取一个字符;
分析第一个程序:
   使用了getchar函数作为输入,该函数每次会读取一个字符,然后进行判断,如果输入的是'\n',那么就停止循环

gets:从输入缓冲区中字符遇到'\n'是结束,但是'\n'并不会读取字符串,而会转换成'\0',加在读取字符的尾部。
分析第二个程序:
   使用了gets函数作为输入,该函数读取的是字符串,所以 ch[i] != '\n',要改为 ch[i] !='\0',输出格式 %c 改成 %s.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-24 21:45:50 From FishC Mobile | 显示全部楼层
输出的时候用%s
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-25 10:06:04 | 显示全部楼层

改成%s可以编译但是输入了按回车没反应
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-25 11:04:36 | 显示全部楼层    本楼为最佳答案   
看到楼主的例子,想和楼主说说 getchar 和 gets 的区别:

getchar:从输入缓冲区中读取一个字符;
分析第一个程序:
   使用了getchar函数作为输入,该函数每次会读取一个字符,然后进行判断,如果输入的是'\n',那么就停止循环

gets:从输入缓冲区中字符遇到'\n'是结束,但是'\n'并不会读取字符串,而会转换成'\0',加在读取字符的尾部。
分析第二个程序:
   使用了gets函数作为输入,该函数读取的是字符串,所以 ch[i] != '\n',要改为 ch[i] !='\0',输出格式 %c 改成 %s.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-11-25 11:13:15 From FishC Mobile | 显示全部楼层
lwhnx 发表于 2017-11-25 10:06
改成%s可以编译但是输入了按回车没反应

gets不会读取换行符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-25 11:18:25 | 显示全部楼层
qq1242009750 发表于 2017-11-25 11:04
看到楼主的例子,想和楼主说说 getchar 和 gets 的区别:

getchar:从输入缓冲区中读取一个字符;

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-1 01:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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