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

问题描述

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

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

解决方案


#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';
    }
}

解决方案二:

 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';
    }
}

解决方案三:

 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';
    }
}

解决方案四:

 void fun(char *pszBuf)
{

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

解决方案五:

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

void change(char *str){
char *p = str;
while(*p!=''){
if(*p>='a' && *p<='z'){
printf("%cn",*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='';/*  为str添加字符结束符  */
printf("%sn",str);
change(str);
printf("%sn",str);
return 0;

}

解决方案六:

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';
}
}

解决方案七:

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

if(!pszBuf) {
    goto out;
}

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

out:
return;
}

时间: 2024-10-30 04:59:52

c语言-pszBuf为字符串指针,用C语言实现将该字符串中的所有小写字符&amp;#39;a&amp;#39;-&amp;#39;z&amp;#39;转换为大写字符。的相关文章

解析C++中指向对象的指针使用_C 语言

C++指向对象的常指针将指针变量声明为const型,这样指针值始终保持为其初值,不能改变. 如: Time t1(10,12,15),t2; //定义对象 Time * const ptr1; //const位置在指针变量名前面,规定ptr1的值是常值 ptr1=&t1; //ptr1指向对象t1,此后不能再改变指向 ptr1=&t2; //错误,ptr1不能改变指向 定义指向对象的常指针的一般形式为: 类名 * const 指针变量名; 也可以在定义指针变量时使之初始化,如将上面第2,

C语言中二维数组指针的简要说明_C 语言

C语言中,指针是一个复杂但又灵活多变的知识点,我们知道,在一维数组中,对于一个数组a[],*a,a,&a,都表示a的首地址,但如果与二维数组混合使用,就显得更为复杂了.例如对于一个二维数组 a[2][4]={{1,2.3},{4,5,6}} a+i,&a[i],*(a+i),a[i], 这四个表达式到底表示什么呢? 先告诉答案吧,其实这几个表达式都是指向同一个地址的,也许你会很诧异,也会很疑惑,怎么会是这样呢!!事实证明就是这样的, C语言中,指针是一个复杂但又灵活多变的知识点,我们知道,

C语言 结构体和指针详解及简单示例_C 语言

指针也可以指向一个结构体,定义的形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 } stu1 = { "Tom", 12, 18, 'A', 136.5 }; //结构体指针struct stu *pstu = &stu1; 也可以在定义结构体的同时定义结构

C语言字符串指针的一个小问题

问题描述 C语言字符串指针的一个小问题 题目如图,答案是又定义了一个指针变量做的.而我的答案编译出来结果也对,就是会运行结束之后出现一个警告对话框.不明白怎么回事,第三幅我的答案有什么问题吗?请问如果不用答案的那种编译方法,我的这种方法可不可行?能改进不报错吗? 解决方案 你的程序没有发现问题 #include <stdio.h> void fun(char * a) { int i = 0, j = 0; while (a[i] == '*') i++; for (; a[i] != '';

C语言 字符串指针详解及示例代码_C 语言

C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在<C语言字符数组和字符串>中已经进行了详细讲解,这里不妨再来演示一下: #include <stdio.h> int main(){ char str[] = "http://c.biancheng.net"; int len = strlen(str), i; //直接输出字符串 printf("%s\n", str); //每次输出一个字符 for(i=0; i<

c语言中单引号和双引号的区别(顺利解决从字符串中提取IP地址的困惑)

c语言中的单引号和双引号可是有很大区别的,使用之前一定要了解他们之间到底有什么不同,下面小编就给大家详细的介绍一下吧,对此还不是很了解的朋友可以过来参考下   问题:从c++文件中将std:string转换为char*后,返回包含IP地址的char*,需要将该字符串char*中的IP地址提取出来: 解决办法:1. 解决思路:IP地址最长为12字符+3句点=15字符,一般性表示为192.168.111.111: 可以从第一个字符开始解析,当不是'.'时,将所有字符保存下来,然后把所有保存下来的字符

c++-C++ 字符串指针输出的为什么是完整字符串,而不是地址

问题描述 C++ 字符串指针输出的为什么是完整字符串,而不是地址 char str[3] = {'a','b',''}; cout<<str<<endl; //1 char *pChar = str; cout<<pChar<<endl; //2 int in[3] = {1,2,3}; cout<<in<<endl; //3 以上代码,1和2处的str.pChar不是指针么?为什么输出的是"ab",而不是一个地址

深入解析C++中的字符数组和处理字符串的方法_C 语言

C++字符数组 用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符.字符数组具有数组的共同属性.由于字符串应用广泛,C和C++专门为它提供了许多方便的用法和函数. 字符数组的定义和初始化 定义字符数组的方法与前面介绍的类似.例如: char c[10]; c[0]=′I′;c[1]=′ ′;c[2]=′a′;c[3]=′m′;c[4]=′ ′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;c[9]=′y′; 上面定义了c为字符数组,包含10个元素.在赋值

使用C语言提取子字符串及判断对称子字符串最大长度_C 语言

先来看一个使用C语言从字符串中提取子字符串的基本方法总结: #include <stdio.h> /*处理中文字符*/ /*遍历字符串,非ASCII字符读取2个字节,ASCII读取一个字节,获取字符串长度*/ int StrLenU(const char* string) { int len = 0 ; const char* p = string; while(*p++ != '\0') { if(*p > 0x80 || *p < 0) { p++; } len++; } re