C语言---字符串操作函数puts()、gets()、fgets()、strlen()、sizeof()、strcpy()、strcat()、strcmp()

  1. 1字符串输入输出函数的使用:

① puts()函数

字符串的输出函数

函数原型:int puts( char *str );

函数的功能:函数puts()把str(字符串)写到STDOUT(标准输出)上.  

标准输入:键盘输入数据

标准输出:将内存的数据输出屏幕显示终端

 函数的返回值:puts() 成功时返回非负值, 失败时返回EOF(-1).

 函数说明:一次只能输出一个字符串,遇到’\0’结束输出

               输出字符串的时候会自动换行

               printf函数不会自动换行,需要加’\n’

#include 
#include

int main()
{

    int a[30] = {0};

    while(1)
    {
        scanf("%s",a);
        puts(a);
    }
      return 0;

}

②    gets()函数

函数原型:char *gets( char *str );

函数功能:gets()函数从STDIN(标准输入)读取字符并把它们加载到str(字符串)里,直到遇到新行(\n)

函数返回值:成功输入则返回str的地址,如果出错,返回NULL。

函数说明:

 使用gets函数,需要人为注意输入的内容不要超过str的空间大小

 gets函数可以识别空格,遇到空格则将空格一起保存在str里面

 scanf函数遇到空格则停止输入

//注意:gets函数因为安全性不够好,所以不建议使用

#include 
#include

int main()
{

    int a[30] = {0};
    printf("input number is :");
    gets(a);
    printf("the number is :");
    puts(a);

    return 0;
}

③   fgets() 函数

函数原型:char *fgets( char *str, int num, FILE *stream );

函数功能:fgets()函数从文件流读取字符并把它们加载到str(字符串)里,最多读取num-1字符

      当输入的字符的个数如果超过num个字符,则str里面最多存储num-1个字符

      当输入的字符没有超过num个字符,键入回车键,则将字符自动保存在str里面

函数返回值:成功输入则返回str的地址,如果出错,返回NULL。

      fgets函数需要手动换行(安全系数比gets()函数要高)

#include 
#include

int main()
{

    int a[10] = {0};
    printf("input number is :");
    fgets(a,10,stdin);
    printf("the number is :");
    puts(a);

    return 0;
}

C语言---字符串操作函数puts()、gets()、fgets()、strlen()、sizeof()、strcpy()、strcat()、strcmp()_第1张图片

  1. 2字符串操作函数(头文件都为 #include

① strlen()函数

函数原型:size_t strlen(const char *str);

函数功能:求str字符串的长度,字符串的个数,不包括’\0’

函数返回值:str字符串的个数

#include 
#include

int main()
{
    int ch;
    int a[30] = {0};

    printf("input number is :");
    fgets(a,30,stdin);     //fgets函数是加上\0(空格)字符
    printf("the number is :");
    puts(a);
    ch = strlen(a);
    printf("\n fgets() the size is %d :",ch);
    printf("\n");

    scanf("%s",a);        //scanf函数是遇到\0(空格)字符就结束,所以没有保存下来
    ch = strlen(a);
    printf("\n  scanf() the size is %d :",ch);


    return 0;
}

C语言---字符串操作函数puts()、gets()、fgets()、strlen()、sizeof()、strcpy()、strcat()、strcmp()_第2张图片

② sizeof() 函数

求数据所占的空间大小

             如果求字符串的空间大小则包含’\0’;

             本质:运算符/关键字

③  strcpy() 函数

函数原型:char *strcpy(char *str1,const char *str2);

函数功能:字符串复制函数,表示将str2字符串复制到str1的内存空间,并且连同str2字符串的’\0’一起复制过去

函数返回值:返回str1的地址,出错返回NULL;

函数注意:保证str1的空间足够大

#include 
#include

int main()
{
    int ch;
    int str1[30] = {0};
    int str2[30] = {0};

    printf("please input str1[] character:");
    fgets(str1,30,stdin);
    printf("\nplease input str2[] character:");
    fgets(str2,30,stdin);

    strcpy(str1,str2);
    printf("the copied str1 is :");
    puts(str1);
    return 0;
}

C语言---字符串操作函数puts()、gets()、fgets()、strlen()、sizeof()、strcpy()、strcat()、strcmp()_第3张图片

 

③  strcat() 函数

函数原型:char *strcat(char *str1,const char *str2);

函数功能:字符串连接函数,表示将str2的内容连同str2字符串的’\0’,一起连接到str1的后面(覆盖str的’\0’)

函数返回值:返回str1的地址

函数注意:保证str1的空间足够大

#include 
#include

int main()
{
    int ch;
    int str1[30] = {0};
    int str2[30] = {0};

    printf("please input str1[] character:");
    scanf("%s",str1);     //注意scanf()函数的输入字符遇空间\0会结束,
    getchar();            //接收回车字符
//fgets(str1,30,stdin);
    printf("\nplease input str2[] character:");
    fgets(str2,30,stdin);
  //  scanf("%s",str2);

    strcat(str1,str2);
    printf("the copied str1 is :");
    puts(str1);
    return 0;
}

C语言---字符串操作函数puts()、gets()、fgets()、strlen()、sizeof()、strcpy()、strcat()、strcmp()_第4张图片

④ strcmp ()函数

函数原型:int strcmp(const char *str1,const char *str2);

函数功能:字符串比较函数,实际上比较字符ASCII码值

  两个字符串对应位置的字符比较ASCII码,如果字符相同则继续往下比较,直到遇到’\0’结束比较,在此过程中,如果str1的字符  > str2 的字符 ,则函数返回值1

                                   如果str1的字符  < str2 的字符 ,则函数返回值-1

如果两个字符串直到遇到’\0’,依然相等则返回0

你可能感兴趣的:(C语言(嵌入式方向))