我做了一个程序,将小写字符串转换为大写字母,如strupr(); 在strings.h ..当我运行程序时打印一些ascii代码
#include<stdio.h>
#include<conio.h>
void xstrupr(char string[]);
void main(void)
{
char string[40];
puts("Enter string:");
gets(string);
xstrupr(string);
printf(" %s ",string);
getch();
}
void xstrupr(char string[])
{
int i;
for(i=0;;i++)
{
if ((string[i]>='a')&&(string[i]<='z') )
string[i]+=64;
else
if(string[i]=='\0')
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如果你不介意我这么说,这太可怕了.当然,不要亲自接受这个.
char变量用作循环索引; 他们通常太小了.islower()检查一个字符是小写.toupper()将其转换为大写.我建议的这种风格的实现方式是:
#include <ctype.h>
void xstrup(char *string)
{
for(; *string; string++)
*string = toupper((unsigned char) *string);
}
Run Code Online (Sandbox Code Playgroud)
请注意,这只是一个合理的(在我看来)实现它想要实现的目标,它绝不是完美的,也不能解决我的所有抱怨.