2 zxc0920 zxc0920 于 2016.01.25 09:18 提问

pszBuf为字符串指针,用C语言实现将该字符串中的所有小写字符'a'-'z'转换为大写字符。

代码中不得调用任何C标准库函数
C语言小白 求解答。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

7个回答

caozhy
caozhy   Ds   Rxr 2016.01.25 09:46

#include <string.h>
 void foo(char *pszBuf)
{
    int n = strlen(pszBuf);
    for (int i = 0; i < n; i++)
    {
        if (pszBuf[i] >= 'A' && pszBuf[i] <= 'Z') pszBuf[i] = pszBuf[i] - 'a' + 'A';
    }
}
caozhy
caozhy   Ds   Rxr 2016.01.25 09:47
 void foo(char *pszBuf)
{
    int n = strlen(pszBuf);
    for (int i = 0; i < n; i++)
    {
        if (pszBuf[i] >= 'a' && pszBuf[i] <= 'z') pszBuf[i] = pszBuf[i] - 'a' + 'A';
    }
}
caozhy
caozhy 回复caozhy: 看我楼下的代码,这下可以了吧。
接近 2 年之前 回复
caozhy
caozhy 回复91program: 哦,好吧,疏忽了
接近 2 年之前 回复
91program
91program strlen 算什么?不是系统的函数。
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.01.25 09:57
 void foo(char *pszBuf)
{
    int n = 0;
        while (pszBuff[++n]);
    for (int i = 0; i < n; i++)
    {
        if (pszBuf[i] >= 'a' && pszBuf[i] <= 'z') pszBuf[i] = pszBuf[i] - 'a' + 'A';
    }
}
qq_27183003
qq_27183003   Ds   Rxr 2016.01.25 10:31
 void fun(char *pszBuf)
{

    while (*pszBuf)
    {
        if (*pszBuf >= 'a' && *pszBuf <= 'z') *pszBuf = *pszBuf - 'a' + 'A';
        pszBuf++;
    }
}

caozhy
caozhy 这个简洁!
接近 2 年之前 回复
sinat_19650093
sinat_19650093   2016.01.25 12:17

这个涉及到字符串的处理,需要注意的一点是待处理的字符串一定要先赋予一个地址,否则即使修改字符串的函数对,也未必能够完成转换,

void change(char *str){
char *p = str;
while(*p!='\0'){
if(*p>='a' && *p<='z'){
printf("%c\n",*p);
*p= *p - 'a' + 'A';
}
p++;
}
}

int main()
{

char *str = (char *)malloc(sizeof(char)*50);
char *p = "school",*tempstr=str;/*  p为需要修改的字符串  */
while(*p!=NULL){
    *(tempstr++)=*p++;
}
*tempstr='\0';/*  为str添加字符结束符  */
printf("%s\n",str);
change(str);
printf("%s\n",str);
return 0;

}

John_ToStr
John_ToStr   Rxr 2016.01.25 17:48

void foo(char *pszBuf)
{
int n = strlen(pszBuf);
for (int i = 0; i < n; i++)
{
if (pszBuf[i] >= 'a' && pszBuf[i] <= 'z') pszBuf[i] = pszBuf[i] - 'a' + 'A';
}
}

chj4129
chj4129   2016.01.25 09:28

参看下面代码:
void
test(unsigned char *pszBuf)
{
unsigned char *p;
unsigned char delta;

if(!pszBuf) {
    goto out;
}

delta = 'a' - 'A';
p = pszBuf;
while(*p != '\0') {
    if(*p >= 'a' && *p <= 'z') {
        *p -= delta;
    }
    p ++;
}

out:
return;
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!