目录:
一、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语言字符串函数库的更多相关文章
-
Lua 中的string库(字符串函数库)总结
(字符串函数库)总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-11-20我要评论 这篇文章主要介绍了Lua中的string库(字符串函数库)总结,本文讲解了string库 ...
-
【C++实现python字符串函数库】strip、lstrip、rstrip方法
[C++实现python字符串函数库]strip.lstrip.rstrip方法 这三个方法用于删除字符串首尾处指定的字符,默认删除空白符(包括'\n', '\r', '\t', ' '). s.st ...
-
【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith
[C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...
-
【C++实现python字符串函数库】一:分割函数:split、rsplit
[C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...
-
C语言字符串函数大全
C语言字符串函数大全 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include ...
-
Lua中的字符串函数库
字符串库中的一些函数是非常简单的: string.len(s) 返回字符串s的长度:string.rep(s, n) 返回重复n次字符串s的串:你使用string.rep( ...
-
C语言字符串函数例子程序大全 – string相关
关于字符串函数的应用细则,例子程序 – jerny 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source) ...
-
C语言开发函数库时利用不透明指针对外隐藏结构体细节
1 模块化设计要求库接口隐藏实现细节 作为一个函数库来说,尽力降低和其调用方的耦合.是最主要的设计标准. C语言,作为经典"程序=数据结构+算法"的践行者,在实现函数库的时候,必定 ...
-
[lua]紫猫lua教程-命令宝典-L1-01-09. string字符串函数库
L1[string]01. ASCII码互转 小知识:字符串处理的几个共同的几点 1.字符串处理函数 字符串索引可以为负数 表示从字符串末尾开始算起 所有字符串处理函数的 字符串索引参数都使用 2.所 ...
随机推荐
-
C#获取文件时间
在NTFS下,文件的创建及修改时间可以精确到毫秒,以下是测试过程. DirectoryInfo diSource = new DirectoryInfo(@"C:\Users\不告诉你\De ...
-
机器学习实战 - 读书笔记(14) - 利用SVD简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第14章 - 利用SVD简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. 基 ...
-
POJ 1066	 Treasure Hunt --几何,线段相交
题意: 正方形的房子,给一些墙,墙在区域内是封闭的,给你人的坐标,每穿过一道墙需要一把钥匙,问走出正方形需要多少把钥匙. 解法: 因为墙是封闭的,所以绕路也不会减少通过的墙的个数,还不如不绕路走直线, ...
-
(转)也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离)
原文链接:http://ued.taobao.org/blog/2014/04/full-stack-development-with-nodejs/ 随着不同终端(pad/mobile/pc)的兴起 ...
-
现代程序设计——homework-10
设计 对于MVC我的理解是这样的,V是台显示器,注意仅仅是一台比显示器普通显示器多几个按钮,用户按什么,按了什么该干什么都不用操心:M是实体的软件抽象,假设实体可以但不执行,我就可以一步一步走,实体可 ...
-
table 表头固定
<html> <head> <title>Test</title> <style type="text/css"> .d ...
-
DOM(文本对象模型)简介
DOM(文本对象模型)简介 在正式开始介绍jQuery处理XML前我们来了解一些必备的基础知识. DOM是HTML或者XML结构的一种展现形式,通过编程对DOM进行修改可以达到修改HTML/XML的目 ...
-
SQL SERVER 中如何将NULL转换为0
select isnull(fieldname,0) from tablename 如果字段fieldname的值是null,则结果是0
-
ASP.NET产生随机验证码
效果图:(Flowing) 1.项目中新建用于存储(位图)图片文件夹 图解: 2.前台可以添加一ASP.NET控件或其他任意用来展示图片标签等(如下) <div> <asp:Imag ...
-
Galaxy (hdu 5073 数学)
Galaxy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total S ...