C语言学习第八章

今天开始学习字符串,学完以后最低要做到了解什么是字符串,以及字符串的一些应用方法,毕竟字符串还是很常见的.

简单的字符串"helloworld",这个字符串大家应该都很眼熟,学编程的第一站啊~

"helloworld"这就是一个字符串,注意S是大写的,‘h‘这样的是一个字符对应的数据类型名char,很多个字符组合在一起就是一个字符串了,注意字符串是用双引号(" ")引起来的哦,可不是‘h‘‘e‘‘l‘‘l‘‘o‘这样简单粗暴的组合在一起哦...

字符串与字符数组:

字符串:在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串.

字符数组:字符数组和字符串的区别是:字符串的末尾有一个空字符 ‘\0’[A1]


[A1]对应的ascii码值:0

字符串的初始化

定义并初始化一个字符串的方法:

char name[15]={ ‘W‘, ‘a‘, ‘n‘, ‘g‘, ‘L‘, ‘i‘, ‘\0‘};

har name[15] = "WangLi";

char password[] = "012345678";

字符串的输出”%s”,最后的’\0’是不会输出的.

字符串I/0函数

char name[10];

gets(name);[A1]

puts(name);[A2]


[A1]从键盘上读入一个完整的行,存入字符数组name。并用空字符‘\0‘取代行尾的换行符‘\n‘。

[A2]把字符数组中的字符串输出到显示器。

示例:

//字符串
   void testString()
   {

          char name[20];
          char address[20];
       char job[10];
    //scanf("%s",name); //使用scanf时不能输入空格,不然会截断.
          //printf("%s",name);
          printf("请输您的入姓名:\n");
    gets(name);//获取用户输入的一行数据并将其保持到name中
    printf("请输您的入地址:\n");
        gets(address);//获取用户输入的一行数据并将其保持到name中
        printf("请输入您的工作:\n");
        gets(job);//获取用户输入的一行数据并将其保持到name中
        printf("--------------------------------\n");
        puts(name);//向显示器输出name的内容
        puts(address);
         puts(job);
   }

示例2 统计字符串中空格的数量

void calcSpace(){
          char str[30];
       int i=0,count=0;
          printf("请输入一行字符串:\n");
            gets(str);//获取用户输入的字符串
            while(str[i]!=‘\0‘){// ‘\0‘代表字符串的结束
                if(str[i]==‘ ‘){
                   count++;
                }
             i++;
       }
       printf("您输入的字符串中包含%d个空格\n",count);
   }

字符串处理函数

与字符串有关的内置函数在头文件string.h中定义

要使用标准库字符串处理函数,程序前应该包含: #include <string.h>

下面是一些常用的字符串函数.

strlen(s):统计字符串的长度

strcpy(dest,src): 使用strcpy(dest,src)实现将src的字符串(源字符串)复制到dest(目标字符串);

示例:

void testString(){
    char str[]="hello,zzsxt!";
     char str2[15];
    //使用strlen(s)统计字符串的长度
    int len = strlen(str);
    printf("%s的长度为%d\n",str,len);
    //使用strcpy(dest,src)实现将src的字符串(源字符串)复制到dest(目标字符串)
    strcpy(str2,str);
    printf("复制str到str2中,str2=%s\n",str2);
}

strcmp(str1,str2): 比较字符串str1和str2的大小(str1==str2返回值为0,str1>str2:返回正数 str1<str2:负数),不忽略大小写

strcmpi(str1,str2): 忽略大小写比较字符串str1和str2的大小(str1==str2返回值为0,str1>str2:返回正数 str1<str2:负数)

示例:

//简单用户登陆
void testLogin(){
    char userName[20],password[20],code[6];
    printf("请输入用户名:\n");
     gets(userName);//将用户输入的用户名赋值给userName
    printf("请输入密码\n");
     gets(password);
    printf("请输入验证码\n");
     gets(code);
    //判断验证码是否正确:ZZSXT
    // strcmpi(str1,str2):忽略大小写进行比较
    if(strcmpi(code,"ZZSXT")==0){
        //判断用户名为zhangsan,密码为123456时登陆成功,
         if((strcmp(userName,"zhangsan")==0)&&(strcmp(password,"123456"))==0){
             printf("登陆成功!\n");
         }else{
             printf("用户名或密码有误!\n");
         }
    }else{
         printf("验证码有误!请重新输入\n");
    }
}

strcat(dest, src):把字符串 src中的字符串连接到字符串 dest中字符串的后面

示例:

void testStrcat(){//字符串的拼接
   char dest[]="zzsxt,";
   char src[]="is very good!";
   printf("连接前:\n");
   printf("dest=%s\n",dest);
   printf("src=%s\n",src);
   strcat(dest,src);// 把字符串 src中的字符串连接到字符串 dest中字符串的后面
   printf("连接后:\n");
   printf("dest=%s\n",dest);
   printf("src=%s\n",src);}

字符指针: 在C语言中,可以将字符指针指向字符串,被指向的字符串可以是一个常量字符串,也可以是一个存储着字符串的字符数组

示例:

void  testStrPointer(){
    char *p="wahaha,wahaha!";
    int count=0;
    while(*p!=‘\0‘){
         if(*p==‘a‘){
            count++;
        }
        p++;
    }
    printf("该字符串中a出现的次数共%d次\n",count);
}

View testStrPointer()

字符指针数组:一个数组中的各个元素都是字符指针

示例:

void testStrPointerArr()
{
    //声明一个字符指针数组:包含的都是字符指针
    /*
    char *str1="zhangsan";
    char *str2="lisi";
    char *str3="wangwu";
    char *names[]={*str1,*str2,*str3....};
    */
    char *names[]={"zhangsan","lisi","wangwu","zhaoliu","tianqi","xinba"};
     char *temp;//中间变量:字符指针变量
    printf("交换前:names[2]=%s,names[3]=%s\n",names[2],names[3]);
    temp=names[2];
    names[2]=names[3];
    names[3]=temp;
    printf("交换前:names[2]=%s,names[3]=%s\n",names[2],names[3]);
}

示例:用户定义版字符串拷贝函数

 1 void mystrcpy(char dest[ ], char src[ ])
 2 {
 3        int i = 0;
 4        while(src[i] != ‘\0‘)
 5        {
 6       dest[i] = src[i];
 7       i++;
 8         }
 9        dest[i] = ‘\0‘;
10 }

示例2: 用户定义版求字符串长度函数

 1 int mystrlen (char *s)
 2 {
 3          int n = 0;
 4          while (*s != ‘\0‘)
 5          {
 6                  ++s;
 7                  ++n;
 8          }
 9         return n;
10 } 

OK以上就是字符串部分的内容了,C语言的学习已经快要结束了,并不是不再坚持了,而是因为一开始学C的目的只是为了后面学JAVA打基础而已,而现在的学习深度据老师说已经足以支撑Java基础的部分了,所以C语言剩下的不多了,但是C语言确实挺有趣的,以后有机会我还是要好好学习一下的..

时间: 2024-08-09 17:11:20

C语言学习第八章的相关文章

关于c语言学习 谭浩强的书

2007-11-16 13:22:58|  分类: PROGRAMME |  标签: |举报 |字号大中小 订阅 广大有志于从事IT行业的同志们,在你们进入这一行之前千万请看这篇文章!太经典了!对你绝对有启发! 千万别买谭浩强和等级考试的书!!!!!! 整理别人的言论,请大家踊跃讨论!!!!!!!!!!!! 1:书皮上面有那么多的牛人题词,估计也许是自己的水平太低. 2:ANSI只给了两种方式:int main(void) {/*...*/}和 int main(int argc, char *

20165333 学习基础和C语言学习基础

说实话,我并没有什么技能比90%以上的人更好,非要拿一个出来的话,篮球勉强好一点吧.最初接触篮球是小学的时候跟着哥哥看他打球,哥哥的球技在同龄人中算是好的,每次看他各种突破过人,我都觉得特别潇洒帅气,在那是我心中就埋下了打好篮球的种子,从那时起,每周我都会都会打一场,但都是瞎打着玩,没什么提高.技术提升最快是在大学的前三个学期,只要一有空,我就会去打球,睡觉前都会看NBA过人剪辑,过人投篮教学视频,第二天便会反复练习视频上的动作,三个学期后,我的投篮突破,上篮,勾手等都有了很大的进步. 我觉得我

大一上学期C语言学习心得总结

经过一个学期的C语言学习,大体算是在这个编程语言上入了门,能够通过一些代码解决特定的问题.当然,每次成功将问题转换成代码都小有激动,虽然只是在黑框上输出了一些数字或是字符串. 编程,虽然还不是很懂,但总感觉不只是学习知识这么简单,更多给我的感受是它在潜移默化中培养了人的一种能力,用自己的话来讲就是一种”代码能力“.对于同一个问题,让大家去解开答案,可能经过一些纸笔的运算都能得出结果,但是如何把这个问题转化成代码,这就是一种能力,而仅仅是将问题转换成代码,这是较为浅层次的能力,更深层的便是通过优化

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

go语言学习(五)——面向对象编程

主要讲的是"类"和接口&和其他传统语言不一样的地方挺多的,断断续续看了好几天 下面是我的练习代码 // GoStudy0219 project main.go /* go语言学习--面向对象编程(1) go中类型的值语义和引用语义 结构体(类)的定义和初始化 */ package main import ( "fmt" ) func main() { //几种"类"的初始化 v1 := &character{"Tom&q

Perl语言学习笔记 6 哈希

1.哈希的键是唯一的,值可以重复! 2.访问哈希元素 $hashname{"$key"};#哈希为大括号,数组为方括号,键为字符串 $family_name{"fred"} = "firstd";#给哈希元素赋值 3.哈希键支持任意表达式 $foo = "na"; $family_name{$foo."me"};#获取$family_name{"name"}对应的值 4.访问整个哈希 %

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它

R语言学习笔记2——绘图

R语言提供了非常强大的图形绘制功能.下面来看一个例子: > dose <- c(20, 30, 40, 45, 60)> drugA <- c(16, 20, 27, 40, 60)> drugB <- c(15, 18, 25, 31, 40) > plot(dose, drugA, type="b") > plot(dose, drugB, type="b") 该例中,我们引入了R语言中第一个绘图函数plot.pl

【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年本人C语言笔试难点进行梳理,希望能对今年应届毕业生的应聘有所帮助. 2013年10月18日更新-->    攻破C语言这个帖子更新到这里,我不仅仅是为了补充大学学生遗漏的知识,我更重要的是希望通过我的经验,你们实际项目中的C语言写得漂亮,写出属于你的风格.“朱兆祺STM32手记”(http://bb