请看一个关于转换大小写的问题

nightking522 2005-10-12 05:01:20
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>


int main(int argc, char **argv)
{
int (*convcase[2])(int) = {toupper, tolower};
int func;
int result = EXIT_SUCCESS;

int ch;

if(argc > 0)
{
if(toupper((unsigned char)argv[0][0]) == 'U')
{
func = 0;
}
else
{
func = 1;
}

while((ch = getchar()) != EOF)
{
ch = (*convcase[func])((unsigned char)ch);
putchar(ch);
}
}
else
{
fprintf(stderr, "Unknown name. Can't decide what to do.\n");
result = EXIT_FAILURE;
}

return result;
}
假设此程序生成的1.exe文件是在d盘根目录下,那么我在命令行输入D:\1.exe Ualsdkjf,那么argv[0][0]是U吗?VC中我不知道如何运行类似的程序,请指点。
...全文
145 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
那么除非你的程序在盘符为U的硬盘上运行
nightking522 2005-10-12
  • 打赏
  • 举报
回复
那问题还是没有解决,若命令行中的参数第一个字母是U或者u那么应该大写输出。这个程序是THE C PROGRAMMING LANGUAGE的习题答案,所以程序应该没错。
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复


把大写改成小写了~
nightking522 2005-10-12
  • 打赏
  • 举报
回复
那你能输出大写吗?
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
D:\Study\VC\My Work\AAA\Release>aaa ADFDS
df
df
sdfsdf
sdfsdf
ASAD
asad
ADdsfASD
addsfasd
^Z
nightking522 2005-10-12
  • 打赏
  • 举报
回复
你的命令行是什么?
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
我的程序运行的是, 把输入的字符变成小写的啊.

你的程序运行怎么回事啊
以下测试结果

asdf
asdf
DFGH
dfgh
^Z
Press any key to continue
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
哦~

我明白了~
再看~~
nightking522 2005-10-12
  • 打赏
  • 举报
回复
可程序的意思是如果argv[0][0]为u或者U,那么将调用toupper函数把输入的字符全部变成大写。但是argv[0][0]永远是D,那怎么变?
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
argv[0] -> D:\1.exe
argv[1] -> Ualsdkjf
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
这句没问题啊~
按你说的
toupper((unsigned char)argv[0][0]) 返回的是'D'
nightking522 2005-10-12
  • 打赏
  • 举报
回复
if(toupper((unsigned char)argv[0][0]) == 'U')
看这一句
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
所以才疑惑程序为什么正确!(程序经验证是正确的。)
----------------------
程序本身没有什么问题啊.
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
哦~~
那我看看你的程序
nightking522 2005-10-12
  • 打赏
  • 举报
回复
楼上说的对,我也是这么想的,所以才疑惑程序为什么正确!(程序经验证是正确的。)
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
那么argv[0][0]是U吗?
-----------------
argv[0]存储的串是你程序本身的名
argv[1]存储的才是Ualsdkjf

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧