| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:strupr 不是将字符串转换为大写的吗?为什么一用程序停止工作呢?
取消只看楼主 加入收藏
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
strupr 不是将字符串转换为大写的吗?为什么一用程序停止工作呢?
直接上代码,求大神指点

程序代码:
//程序判断输入是不是行星名,并返回提示语。
//例:命令行输入planet mercury运行程序,程序输出mercury is planet 1
//例:命令行输入planet sun运行程序,程序输出sun is not a planet
//注:忽略输入的命令行参数的大小写
//程序名为planet.c

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

#define NUM_PLANETS 9

//将输入的命令行参数与一个planets字符数组依次比较
int main(int argc, char *argv[])
{
    char *planets[] = {"Mercury", "Venus", "Earth",
                        "Mars", "Jupiter", "Saturn",
                        "Uranus", "Neptune", "Pluto"};
    int i, j;

    for (i = 1; i < argc; i++){
        for (j = 0; j < NUM_PLANETS; j++)
            if (strcmp(strupr(argv[i]), strupr(planets[j])) == 0){    //这里只要把两个strupr都删除程序就能正常工作,否则就停止工作。但是删除strupr后输入的命令行参数就有大小写的要求了。为什么不能使用strupr呢?
                printf("%s is planet %d\n", argv[i], j + 1);
                break;
            }

        if (j == NUM_PLANETS)
            printf("%s is not a planet\n", argv[i]);
    }

    return 0;
}

搜索更多相关主题的帖子: 运行程序 planet 字符串 color 
2014-09-30 14:43
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
收藏
得分:0 
回复 2 楼 beyondyf
谢谢大神!修改后程序能运行了!

假设输入为planet Mercury,argv[1]就是"Mercury"字符串,planets[1]也是"Mercury"字符串,为什么后者是字符串常量,前者就不是呢?


[ 本帖最后由 muyoucumian 于 2014-9-30 16:06 编辑 ]
2014-09-30 15:55
快速回复:strupr 不是将字符串转换为大写的吗?为什么一用程序停止工作呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027525 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved