《黑马程序员》 字符串 (C语言)

字符串的基本使用

定义方法:

char name[10] ="jack";   此时字符串中共包含‘j’,’a‘,'c','k','\0'

中括号中的10代表该字符串最多存放10个字符

字符串的输出

1.printf("jack");

2.printf(name);              //把数组传入printf语句输出会出现警告        

这两种方法输出结果相同,但printf语句默认情况下只认字符串常量,所以第二种方法在编译时会出现警告

字符串的存储细节:

数组name中共占用8个字节,含有三个元素分别为'i','t','\0'

char name[8] ="it";

char name2[8] = {'i','t','\0'};

char name3[8] = {'i','t',0};

三种写法效果相同

注:因’\0‘的ASCII值为0,故’\0‘与0等价

修改数组内元素的值

name[1] = 'q';      //把数组内第2个元素的值改为q;

\0的作用

\0为字符串的结束标志

#include <stdio.h>  
int main()
{
  char name[] ="it";
  char name2[] ={'o','k'};
  printf("%s\n",name2);
  return 0;
}

运行结果:okit

数据内存如下所示

strlen函数

作用:用来计算字符串的长度,strlen函数声明在<string.h>文件中,计算的是字符数并不是字数,计算的字符不包括尾部的"\0"

 

#include <stdio.h>  
#include <string.h>
int main()
{
	char name[] ="haha";                 //定义一个字符串数组
	int size1 =strlen(name);             //计算字符串的长度      不包含"\0"
	int size2 =sizeof(name);             //计算字符串的占用字节数,包含"\0"
        printf("%d\t%d\n",size1,size2);      //输出
        return 0;
}

运行结果:4 5

 代码练习1:

#include<stdio.h>
//字符串数组
int main()
{ 
	//一维数组
	char  name[] ="haha";
	char name1[] ="rose";
	char name2[] ="jim";
	char name3[] ="jake";
	//二维数组
	//第一种方法
	char name[2][10] = {"jake","rose"};
	//第二种方法
	char name[2][10] = 
	{
		{'j','a','k','e','\0'};
		{'r','o','s','e','\0'}; 
	};
        return 0;
}

  代码练习2:

#include <stdio.h>
#include <string.h>
/*编写一个函数char_contains(char str[],char c),如果字符串中str中包含字符C,
则返回数值1,否则返回数值0.
*/
int char_contains(char str[],char c)
{
	int i;
	//遍历数组内所有元素,检测数组内是否包含字符C
	for(i = 0;i < strlen(str);i++){
		if(str[i] ==c){
		//返回数值1
		return 1;
		}
	}
	return 0;
}
int main()
{   
	char  str[]="itcast";
	int result = char_contains(str,'c');
	printf("%d\n",result);
	return 0;
}

 代码练习3

#include <stdio.h>
#include <string.h>
int main()
{
	int i;
    char str[] = "cha zhao zui  chang de  zifuchuan  danci ";
    int maxCount = 0;                                      // 记录最长单词的长度
    int GB = 0;                                            // 记录单词尾字符下标
    for (i = 0; i < strlen(str); ++i) {
        int count = 0;                                     // 记录新单词长度
        while (str[i] != ' ' && str[i]) {                  // 字符不是空格也不是\0的时候开始记录单词长度
            ++i;                                           
            ++count;                                     
        }
        if (count > maxCount) {                             //此段if语句的最用是更新最长单词的长度     
            maxCount = count;
            GB = i - 1;
        }
    }
    printf("最长单词是:");
	for (i = GB - maxCount + 1; i <= GB; ++i){
        printf("%c", str[i]);                                //输出最长单词
	}
    printf("\n");                                            //换行
    return 0;
}

 

posted @ 2015-04-19 19:23  深海同志  阅读(167)  评论(0编辑  收藏  举报