笔记(5)字符串和字符串函数
来源:互联网 发布:手机导航软件 编辑:程序博客网 时间:2024/06/06 19:19
**********************************************************************************
-------字符串和字符串函数
#include<stdio.h>
int main()
{
charhear[]="How are you!";//char *heard="How areyou!";//*(head++)
const char*p="Hello!What is your name?";
const char*mp[3]={"Hello!","I'm zbg","Nice to me you,I'm wwk"};
puts(p); //mp数组实际并不存放字符串,它只存放字符串的地址
//*mp[0],mp[0][0]表示第一个字符串的第一个字符
for(inti=0;i<24;i++)
putchar(*(p++));
puts("");
for(intj=0;j<3;j++)
puts(mp[j]);
return 0;
}
-------------------------------------------------------------------------------
char*p1="Peter";
p1[0]='T';//不允许!!!
printf("Peter");
printf(":Beware the %s!\n","Peter");
-------------------------------------------------------------------------------
char*p2;
while(gets(p2)!=NULL)//可以检测是否到了文件末尾
一、空指针的空字符的区别:
1、空指针是一个地址,而空字符是一个char类型的数据对象,其值为0.
2、数值上两者都可用0表示,但它们的概念不同:
NULL是一个指针,而0是一个char类型的常量
二、使用gets(),当输入的数据超出预留存储区时,多出的字符简单的溢出到相邻的
内存区,而fgets()让用户指定最大读入字符数
重要一点,gets()很不安全!!!!!!!!!!!
-------------------------------------------------------------------------------
一个fgets()的示例
#include<stdio.h>
#define MAX 80
int main()
{
charname[MAX];
char*ptr;
puts("Whatis your name?");
ptr=fgets(name,MAX,stdin);
printf("%s!Hi~%s!\n",name,ptr);
return0;
//运行结果:
//What isyour name?
//KangKang
//KangKang
//!Hi~KangKang
//!
//-----------------------------------------------------------
问题在于fgets()将换行符也存储到字符里(而gets()是将其丢弃)
解决方法:可用strchr()来定位和删除换行符
char *strchr(const char *s,intc);
该函数返回一个指向字符串s中存放字符c的第一个位置的指针,如果没找到,
函数就返回一个空指针NULL。
char linep[80];
char *fine;
fgets(line,80,stdin);
find=strchr(line,'\n');//查找换行符
if(find) //如果该地址不为NULL
*fine='\0'; //就把一个空字符放在这里
else ...
-------字符串和字符串函数
#include<stdio.h>
int main()
{
}
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
一个fgets()的示例
#include<stdio.h>
#define MAX 80
int main()
{