目录:

一、C语言字符串函数库

二、用命令行输入参数

回到顶部

一、C语言字符串函数库

1 #include <string.h>

2 字符串复制

strcpy(参数1,参数2);

参数1:目标字符串位置(复制到哪里)

参数2:源字符串(来源)

3 字符串拼接函数

strcat(参数1,参数2);

参数1:第一个字符串

参数2:第二个字符串

将第一个字符串的内容与第二个字符串的内容拼接在一起,保存在第一个字符串中。

4 字符串长度

strlen(str);

参数为字符串,返回字符串长度,不包含结束符。

5 字符串比较函数

strcmp(参数1,参数2);

根据ASCII码表来比较字符串中每一个字符是否相等,结果为两个字符串的差值,差值为0,字符串相等,否则不相等。

练习:模拟系统登录,提示输入用户名、密码,和数据库匹配,用户名:admin密码:123登录成功,否则登录失败,重新登录,输入错误3次,退出程序。

 #include <stdio.h>
#include <string.h>
#include <stdlib.h> //strcpy字符串复制函数
void test(){
char* str = "hello";
char str2[];
strcpy(str2, str);//字符串复制函数,把str的字符串赋给str2,该函数返回新复制的字符串的首地址
printf("str2:%s\n",str2);
printf("str2 address:%p\n",strcpy(str2, str));
} //strcat字符串拼接函数
void test2(){
char str3[] = {'h','e','l','l','o','\0'};//定义字符串变量
char* str4 = " world";//定义字符串常量
strcat(str3,str4);//这里不能调换位置,因为str4值不能修改
printf("str3:%s\n",str3);
} //strlen字符串长度函数
void test3(){
char str3[] = {'h','e','l','l','o','\0'};
printf("str3 length:%zd\n",strlen(str3));//不包括结束符'\0',strlen参数存放数组名、字符指针名以及字符常量,该函数返回int型整数
} //strcmp字符串比较函数
void test4(){
char* str5 = "A";
char str6[] = {'A','\0'};
int res = strcmp(str5, str6);//相等返回0,不相等返回差值(str5 - str6)
printf("res:%d\n",res);
if (res == ) {//也可以写!res
printf("字符串相等\n");
}else{
printf("字符串不相等");
}
}
int main(int argc, const char * argv[])
{
/*
练习:模拟系统登录,提示输入用户名、密码,和数据库匹配,用户名:admin密码:123登录成功,否则登录失败,重新登录,输入错误3次,退出程序。
*/
char* db_username = "admin\n";
char* db_password = "123\n";
char username[];
char password[];
for (int i = ; i < ; i++) {
printf("输入用户名:\n");
fgets(username, , stdin);
printf("输入密码:\n");
fgets(password, , stdin);
int res_username = strcmp(db_username, username);
int res_password = strcmp(db_password, password); if (res_username == && res_password == ) {
printf("登录成功!欢迎您。\n");
break;
}else{
if (i == ) {
printf("对不起!登录超过三次。\n");
exit();//退出系统
}
printf("登录失败!请重新登录。\n");
}
}
return ;
}

回到顶部

二、用命令行输入参数

1 argc代表命令行的参数个数(包含命令本身)

2 *argv[]代表命令行的参数的值(字符串)(包含命令本身)

3 运行:./a.out  abc  hahaha

 #include <stdio.h>

 int main(int argc, const char * argv[])
{ // insert code here...
printf("argc, %d!\n",argc);
for (int i = ; i < argc; i++) {
printf("argv[%d]:%s\n",i,argv[i]);
}
/*
tarenatekiMac-mini-3:命令行参数 tarena$ cc main.c
tarenatekiMac-mini-3:命令行参数 tarena$ ./a.out
argc, 1!
argv[0]:./a.out
tarenatekiMac-mini-3:命令行参数 tarena$ ./a.out a ccc
argc, 3!
argv[0]:./a.out
argv[1]:a
argv[2]:ccc
tarenatekiMac-mini-3:命令行参数 tarena$
*/
return ;
}

练习:

定义五虎上将,guanyu、zhangfei、zhaoyun、huangzhong、machao,通过命令行方式,输入一个人名,然后判断输出,是否是五虎上将,结果输出到屏幕上。

#include <stdio.h>
#include <string.h> int main(int argc, const char * argv[])
{
char* names[] = {"guanyu","zhangfei","zhaoyun","huangzhong","machao"}; printf("argc, %d!\n",argc);
for (int i = ; i < argc; i++) {
printf("argv[%d]:%s\n",i,argv[i]);
if (strcmp(argv[i],names[]) == || strcmp(argv[i],names[]) == || strcmp(argv[i],names[]) == || strcmp(argv[i],names[]) == || strcmp(argv[i],names[]) == ) {
printf("是:%s\n",argv[i]);
}else{
printf("不是\n");
}
}
return ;
}

13-C语言字符串函数库的更多相关文章

  1. Lua 中的string库(字符串函数库)总结

    (字符串函数库)总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-11-20我要评论 这篇文章主要介绍了Lua中的string库(字符串函数库)总结,本文讲解了string库 ...

  2. 【C++实现python字符串函数库】strip、lstrip、rstrip方法

    [C++实现python字符串函数库]strip.lstrip.rstrip方法 这三个方法用于删除字符串首尾处指定的字符,默认删除空白符(包括'\n', '\r', '\t', ' '). s.st ...

  3. 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  4. 【C++实现python字符串函数库】一:分割函数:split、rsplit

    [C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...

  5. C语言字符串函数大全

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

  6. Lua中的字符串函数库

    字符串库中的一些函数是非常简单的: string.len(s)          返回字符串s的长度:string.rep(s, n)      返回重复n次字符串s的串:你使用string.rep( ...

  7. C语言字符串函数例子程序大全 – string相关

    关于字符串函数的应用细则,例子程序 – jerny 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source) ...

  8. C语言开发函数库时利用不透明指针对外隐藏结构体细节

    1 模块化设计要求库接口隐藏实现细节 作为一个函数库来说,尽力降低和其调用方的耦合.是最主要的设计标准. C语言,作为经典"程序=数据结构+算法"的践行者,在实现函数库的时候,必定 ...

  9. [lua]紫猫lua教程-命令宝典-L1-01-09. string字符串函数库

    L1[string]01. ASCII码互转 小知识:字符串处理的几个共同的几点 1.字符串处理函数 字符串索引可以为负数 表示从字符串末尾开始算起 所有字符串处理函数的 字符串索引参数都使用 2.所 ...

随机推荐

  1. Struts2复习(四)防止表单反复提交

    1.採取请求转发的方式完毕表单内容的加入会造成内容的反复插入. 2.採取重定向的方式实现数据的加入不会导致数据的反复插入. 3.防止表单反复提交的两种方式 1)  通过重定向  2)  通过Sessi ...

  2. SQL学习之去重复查询

    下面是一张表的数据

  3. javascript 的加载方式

    本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属 ...

  4. Dictionary<string, string> 排序

    .net framework 2.0 版 Dictionary<string, string> collection = new Dictionary<string, string& ...

  5. ORA-03113: 通信通道的文件结尾 进程 ID: 764 会话 ID: 125 序列号: 5

    昨天因为导入很久数据,最后一看是因为数据文件不够,后来就关机了.现在,开启数据库,总是报“ORA-03113: 通信通道的文件结尾” SQL> conn /as sysdba; 已连接到空闲例程 ...

  6. Xcode工程使用CocoaPods管理第三方库新建工程时出现异常

    Xcode工程使用CocoaPods管理第三方库新建工程时出现异常 Xcode工程使用CocoaPods管理第三方库新建工程时出现错误工程使用CocoaPods管理第三方库,在新的目录update版本 ...

  7. 在Java SE中使用Hibernate处理数据

    如今,Hibernate正在迅速成为非常流行的(如果不是最流行的)J2EE O/R映射程序/数据集成框架.它为开发人员提供了处理企业中的关系数据库的整洁.简明且强大的工具.但如果外部需要访问这些已被包 ...

  8. 5G关键技术研究方向

    对于还没体验4G移动通信魅力的国内的移动通信用户而言,5G也许还是镜中花,雾中月:但对于科研界而言,5G研究已经启程,三星电子5月份宣布,率先开发出了首个基于5G核心技术的移动传输网络,实现每秒1Gb ...

  9. JSWING小工具

    项目中需要一个发送指令到指定服务端,取得设备ID及检测数据的小工具,就利用jswing开发了一个简单小组件,最终效果如下: 代码很简单,具体片段如下: Window.java import java. ...

  10. android基于XMPP的消息推送机制

    关于服务器端向Android客户端的推送,主要有三种方式:1.客户端定时去服务端取或者保持一个长Socket,从本质讲这个不叫推送,这是去服务端拽数据.但是实现简单,主要缺点:耗电等2.Google的 ...