编程基础C—— 详谈字符串 与 字符数组的定义与应用

字符串存储以 ’’ 结束,如果一段存储区域有多个 ’’ ,则取第一个为结束标志
 
使用字符串处理函数:
 
(1)在使用字符串处理函数时,应当在程序文件的开头用
         #include <string.h>
 
(2)puts 每次只能打印一个字符串,且自带回车。puts(字符数组地址)
 
(3)gets 可以接收空格,但是不能录入多个字符串。gets(字符数组地址)
 
(4)当我们用scanf输入一个字符串时,会将空格作为字符串的结束符。
 
如果利用一个 scanf 函数输入多个字符串,则应在输入时以空格分隔,
 
例如:
 
char str1[5],str2[5],str3[5];
scanf(“%s%s%s”,str1,str2,str3);
输入数据:
How are you? 回车
 
5)strlen(字符数组) 测试字符串长度函数,结果值为字符串的实际长度(不包括在内)值的类型为(unsigned long int)无符号长整形。
 
(6)strcpy(str1,str2) 字符串复制函数 ,将str2复制给str1,str1,str2也可以是字符串。
 
(7)strcat (str1,str2)字符串串连接函数,将str2接到str1的后面,结果存放在str1中。
 
(8)strcmp(str1,str2)字符串比较函数,将两个字符串自左至右逐个字符比较(按ASCII码值大小比较),直到出现不同的字符或遇到’’为止返回值为整形数值。if(strcmp(str1,str2)>0 / =0 / <0).
 字符串比较函数逐个字符(ASCII)进行比较,比较的结果就是差值,值>0时 前>后,=0 时 前=后,<0 时 前<后
 
例;
 
//自定义函数,实现字符串的比较,不能用strcmp;
#include <stdio.h>
void funstrcmp(char a[],char b[])
{
    int i=0,result = 0;
    for(i=0;i<5;i++)
       
    {
       if  ((a[i]!=b[i])&&(a[i]!='')&&(b[i]!=''))
    {
       result = a[i]-b[i];
      
    }
}
    printf("result = %d",result);
}
int main(int argc, const char * argv[])
{
   char a[]="abcd";
   char b[]="abde";
   funstrcmp(a,b);
    return 0;
}
 
//自定义函数,实现字符串的拷贝,不能用strcpy;
#include <stdio.h>
#include <string.h>
void myStrCpy(char b[],char a[]){
    for (int i = 0; i <  strlen(a); i++) {
        b[i] = a[i];
    }

        b[strlen(a)] = '';
  }
int main(int argc, const char * argv[]) {
    char a[] = "my";
    char b[20];
    myStrCpy(b, a);
    printf("b = %s ",b);
    return 0;
}
应用实例:
1.输入一个字符串,然后得到其倒序形式,并输出,如原始字符串是:abc,处理之后输出cba
第一种方法:
#include<stdio.h>
#include<string.h>
int main()
{
    printf("请输入字符串:");
    char a[100];
    char b[100];
    gets(a);
    for (int i=0;i<=strlen(a);i++) {
        b[i]=a[strlen(a)-1-i];
    }
      b[strlen(a)]=‘’;
      printf("倒序字符串为:");
     puts(b);
      return 0;
}
第二种方法:
#include <stdio.h>
#include <string.h>
  void fun(char a[])
{
    char t;
    unsigned long int j,i;
        j = strlen(a);
    for(i =0;i< j/2;i++)
    {
        t=a[i];
        a[i]=a[j-1-i];
        a[j-1-i]=t;
    }
     printf("倒序为:");
     puts(a);
 }
int main(int argc, const char * argv[])
{
    char b[100];
    printf("请输入一个字符串:");
    gets(b);
    fun(b);
    return 0;
}
2.输入一个字符串,然后将其中的单词个数统计出来并打印
#include <stdio.h>
#include <string.h>
 int main(int argc, const char * argv[])
{
        int n=1;
        unsigned long int i=0;
        char a[100];
        printf("请输入一个字符串:");
        gets(a);
    for(i=0;i<strlen(a)+1;i++)
    {
        if(a[i]==' '&&a[i+1]!=' ')
              n++;
    }
    printf("单词的个数为:%d",n);
        return 0;
}
 
结合实例希望对大家学习字符串 与 字符数组有所帮助!
感谢您的访问! 若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/
原文地址:https://www.cnblogs.com/Rong-Shengcom/p/4931266.html