例子:涉及字符串、字符、指针、++等

例一:字符串与字符

#include <stdio.h>
void reverse(char *str)
{
char *end=str;
printf("%c\n",*str); //结果是a
//printf("%s",*str); //以字符串输出,有错误
printf("%s\n",str); //这样输出字符串是对的
printf("%c\n",*end);
printf("%s\n",end);
printf("%c\n",*str+1); //结果是b
}
int main()
{ reverse("abcdef"); return ;
}

例二:统计字符串单词的个数【如何去掉空格的问题】

#include "stdio.h"
int count_word(char *str);
void main()
{
char str1[];
int sum=;
puts("please enter a string");
gets(str1);
sum=count_word(str1); //返回的count就是sum
printf("there are %d words in this sentence",sum);
}
int count_word(char *str)
{
int count,flag;
char *p;
count=;
flag=;
p=str;
while(*p!='\0')/*当字符串没有到结尾的时候,重头到尾的循环*/
{
if(*p==' ')/*假如字符串遇到空格,就将flag清零,同时可以过滤掉多余的空格*/
flag=;
else if(flag==)/*当字符串不是空格时,假如flag为0,那么计算器加1,既是遇到空格后的第一个字符时*/
{
flag=;/*将flag标记回1,这样在遇到第一个字符后的字符时可以将他过滤掉,直到遇到空格时,在清零*/
count++; //count就是统计单词数的变量。其实就是单词数的第一个字符,后面的字符都没有统计了
}
p++; //继续加一。没有遇到空格的时候 。直到继续遇到空格或结尾的时候,才不加一了。
}
return count; }

例三:字符串反转

#include <stdio.h>
void reverse(char *str)
{
char *z=str;
char *end=str;
char tmp;
if(str)
{
while(*end)
{
++end;
}
--end; //回退一个,找到null
while(str < end)
{
tmp = *str;
*str++ = *end;
*end--=tmp;
}
}
printf("%s",z); }
int main()
{
char s[]="";
reverse(s);
//上面两句,如果直接这么写 reverse("123456789"); 就会有一个报警错误
return ;
}

例四:字符串长度

#include <stdio.h>
void reverse(char *p)
{
if( *p=='\0')
return ;
reverse(p+);
printf("%c",*p);
}
int main()
{
reverse("abcdefghjklmn");
//为4
printf("%d",sizeof("abc"));
//为3
printf("%d",strlen("abc"));
printf("\n");
return ; }

例五:字符串反转【用递归和指针的方式】

#include <stdio.h>
void reverse(char *p)
{
if( *p=='\0')
return ;
reverse(p+);
printf("%c",*p);
}
int main()
{
reverse("abcdefghjklmn");
printf("\n");
return ; }

例六:统计字符串中每个单词的频率

#include "stdio.h"
#include "stdlib.h"
#include "string.h" int main()
{
int i=,t,dc=,zm[];
char a[];
for(i=;i<;i++)
zm[i]=;
gets(a);
i=;
while(a[i]!='\0')
{ if(a[i]!=' ')
{while(a[i]>' ' )
{zm[a[i]-'a']++;i++;}
dc++;}
else
i++;
}
for(i=;i<;i++)
if(zm[i]>)
printf("\n%c出现了%d次\t",i+'a',zm[i]);
printf("\n共有单词%d个\n",dc);
system("pause");
}

例七:字符串长度与字符串在内存的长度

#include "stdio.h"
int main()
{
char str[]="ABC";
char a[]="Program"; char *ptr="ABC";
printf("str = \"%s\"\n",str);
printf("%d\n",strlen(a));//长度就是长度,sizeof是内存中的长度 。所以下面那个是6,这个是7
printf("%d\n",sizeof(a));//碰到第一个\0前面 ,并把\0计算在内。 printf("%d\n",strlen(str));
printf("%d\n",sizeof(str)); //根据初始化的6来定 printf("%d\n",sizeof(ptr));//碰到第一个\0前面 ,并把\0计算在内。 printf("ptr=\"%s\"\n",ptr);
return ;
}

例八:在c语言中,字符串作为字符数组来考虑

#include "stdio.h"
int main()
{ char a[]="Program";
char b[]={'p','r','o','g','r','a','m'};//在c语言中,将字符串作为字符数组来处理。(c++中不是)
char c[]="'p','r','o','g','r','a','m'";
printf("%d\n",strlen(a));
printf("%d\n",sizeof(a)); printf("%d\n",strlen(b));
printf("%d\n",sizeof(b));// \0可以不要,相当于上面的数组初始化写死了,后面没有\0作为结束标记 printf("%d\n",strlen(c));
printf("%d\n",sizeof(c)); return ;
}

例九:如何存放字符串

在C语言中,可以用两种方法表示和存放字符串:
(1)用字符数组存放一个字符串
          char str[ ]="I love China";
(2)用字符指针指向一个字符串
          char* str="I love China";
对于第二种表示方法,有人认为str是一个字符串变量,以为定义时把字符串常量"I love China"直接赋给该字符串变量,这是不对的。
C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放字符串常量,程序在定义字符串指针变量str时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给str。
两种表示方式的字符串输出都用
printf("%s\n",str);
%s表示输出一个字符串,给出字符指针变量名str(对于第一种表示方法,字符数组名即是字符数组的首地址,与第二种中的指针意义是一致的),则系统先输出它所指向的一个字符数据,然后自动使str自动加1,使之指向下一个字符...,如此,直到遇到字符串结束标识符 " \0 "。

例十:截取字符串并依次输出

#include "stdio.h"
void AllSubstring(const char *str,int high)
{
int i, j, k;
if(!str)
return; for(i=;i<=high;i++)
{
for(j=i; j<=high;j++)
{
for(k = i; k<=j; k++)
printf("%c", str[k]);
printf("\t");
}
printf("\n");
}
} int main(void) {
AllSubstring("abcde",);
return ;
}

c语言字符串实例的更多相关文章

  1. Go语言字符串

    Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 . 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称.可使用 []byte() ...

  2. C语言字符串操作总结大全(超详细)

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat( ...

  3. C语言字符串拷贝

    C语言字符串拷贝利用指针操作,要清楚知道指针的指向 代码如下: #include <stdio.h> #include <assert.h> #include <stri ...

  4. C语言字符串长度(转)

    C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项. C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度. 在程序里,一般会用strlen()函数或sizeof ...

  5. C语言字符串操作常用库函数

    C语言字符串操作常用库函数 *********************************************************************************** 函数 ...

  6. c语言字符串操作大全

     C语言字符串操作函数 函数名: strcpy 功  能: 拷贝一个字符串到另一个 用  法: char *stpcpy(char *destin, char *source); 程序例: #incl ...

  7. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

  8. C 语言字符串连接的 3种方式

    C 语言字符串连接的 3种方式 #include<stdio.h> #include<stdlib.h> #include<string.h> char *join ...

  9. C语言字符串声明

    重新学习C语言字符串声明char *a="nihao";char a[]="nihao";什么区别?前者定义的是指针,并且指向字符串常量“nihao”,后者是字 ...

随机推荐

  1. 45度地图遮挡问题解决方案(cocos2d-x)

    最近一直在做45度斜视角游戏,也就是isometric等容地图,俗称2.5D.地图上物体的前后遮挡是我遇到的第一个问题,总结一下处理方法. 遮挡问题(不知道术语),就是比如一个角色站在树后面,那么树要 ...

  2. apache环境下配置服务器支持https

    SSL加密的意义在于保护服务器到客户端的信息或者是客户端到服务器的信息不被监听和篡改. 现在一些主流的网站都已经是通过 https访问了,搜索引擎对此类网站的收录也不存在问题了. 具体的配置流程大概是 ...

  3. 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇01:播放序列动画》

    1.播放序列动画 系列动画播放概述 2D游戏中的动画系统,不同于3D游戏.3D游戏中,角色美术资源不仅包含角色模型的,还包括角色的贴图和动作等,模型本身自带角色的动作动画效果.2D游戏中,角色美术资源 ...

  4. 迁移web.py项目至git@osc的项目演示平台

    1. 开启演示平台 选择WSGI,输入应用名称,即是演示网页的网址. 2. web.py代码迁移 将Python的site-packages目录下的web文件夹复制到代码目录下,与网页程序在同一个文件 ...

  5. HDU-4734 F(x) 数位DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 注意到F(x)的值比较小,所以可以先预处理所有F(x)的组合个数.f[i][j]表示 i 位数时 ...

  6. 执行原始的 SQL 查询

    The Entity Framework Code First API includes methods that enable you to pass SQL commands directly t ...

  7. listview禁止双击一条之后选中复选框按钮的方法

    this.listViewUsers.SelectedItems[0].Checked = !this.listViewUsers.SelectedItems[0].Checked;

  8. POJ 1751 Highways (kruskal)

    题目链接:http://poj.org/problem?id=1751 题意是给你n个点的坐标,然后给你m对点是已经相连的,问你还需要连接哪几对点,使这个图为最小生成树. 这里用kruskal不会超时 ...

  9. 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(二)

    本文转载自 http://blog.csdn.net/cutesource/article/details/6192145 下面再来看看Tomcat是如何使用NIO来构架Connector这块的. 先 ...

  10. Spring @RequestHeader用法

    Spring MVC提供了 @RequestHeader注解,能够将请求头中的变量值映射到控制器的参数中.下面是一个简单的例子: import org.springframework.stereoty ...