strstr memset strcpy feof sizeof strlen strrchr strchr

1 strstr(str1,str2) 此时千万要记住,这是在判断str2是否是str1的子串!!
strstr方法会比较str1和str2,判断str2是否是str1的子串,如果是,则返回str2在str1中首次出现的地址;如果不是,则返回null;

2 memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的。 其原型是:void* memset(void *_Dst, int _Val, size_t _Size)
_Dst是目标起始地址,_Val是要赋的值,_Size是要赋值的字节数。

   int num[8];

   我们用memset给str初始化为{1,1,1,1,1,1,1,1},

   memset(num,1,8);//这样是不对的

 一个int是4个字节的,8个int是32个字节,所以首先要赋值的长度就不应该为8而是32。

 因为memset是 逐字节 拷贝,以num为首地址的8字节空间都被赋值为1,

 即一个int变为0X00000001 00000001 00000001 00000001,显然,把这个数化为十进制不会等于1的。

所以,在memset使用时要千万小心,在给char以外的数组赋值时,只能初始化为0或者-1

3 .函数原型 char *strcpy(char *dest,const char *src)
从src地址开始且含有null结束符的字符串复制到以dest地址开始的字符串中,并返回指向dest的指针。通俗的讲就是将 src字符数组复制到dest数组中,如果dest数组本身有数据,会把src里的数据全部复制到dest中,如果dest中有数据小于src地址长度的将会被覆盖,而大于src长度的将保留。

4 feof用于判断文件结尾。头文件。使用方法是feof(fp),fp为指向需要判断的文件的指针。如果不到文件结尾,返回0值;如果是文件结尾,返回非0.
但是feof有一个点是会读取最后一个字符两次
假设文件包含10字节,并且你读取了十字节,调用feof函数,函数返回值均为0,这是因为尽管文件指针这时已经指向文件尾了,但是你没有试图越过文件尾读取数据,只有当你尝试了读取第十一个字节时,调用feof,函数才会返回0
EOF一般代表-1

peek()方法预读取下一个字符(不管是何符号)
fstream inFile;
inFile.open(fileName, ios::in);
while(!inFile.eof()&&inFile.peek()!=EOF){
    //相关的读取操作
}

5 sizeof是一个操作符不是一个函数,sizeof返回的是内存的大小,sizeof一个指针结果一直为4,指针的大小为4,sizeof一个结构体必须要是整数倍,
strlen返回长度 遇到结束符’\0’ 返回

6
查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回这个位置的地址。如果未能找到指定字符,那么函数将返回NULL。使用这个地址返回从最后一个字符c到str末尾的字符串。

#include <string.h>
#include <stdio.h>
int main(void)
{
    char string[20];
    char *ptr, c = 'r';
    strcpy(string, "There are two rings");
    ptr = strrchr(string, c);
    if (ptr)
        printf("The character %c is at position: %s\n", c, ptr);
    else
        printf("The character was not found\n");
    return 0;
}

strrchr返回的指针应当指向”rings”里的’r’,而不是“There”或”are”里的’r’。
运行结果是:The character r is at position:rings

7
函数原型:extern char *strchr(char *str,char character)
参数说明:str为一个字符串的指针,character为一个待查找字符。

所在库名:#include <string.h>

函数功能:从字符串str中寻找字符character第一次出现的位置。

返回说明:返回指向第一次出现字符character位置的指针,如果没找到则返回NULL。

#include<string.h>
#include<stdio.h>
int main()
...{
    char *str="Hello,I am sky2098,I liking programing!";
    char character='k' ;  //指定一个字符
    char *strtemp;

    strtemp=strchr(str,character);
    if(strtemp!=NULL)
    ...{
        printf("%s ",strtemp);
    }
    else
    ...{
        printf("can not find %c !",strtemp);
    }
    return 0;
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值