1、将字符串插入到某位置(原字符串“hello yincheng hello cpp hello linux”,查找cpp,找到后在cpp的后面插入字符串“hello c”)

需要用到strstr字符串检索,strcpy字符串拷贝,strcat字符串拼接

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h> void main() {
char allstr[] = "hello yincheng hello cpp hello linux";
char findstr[] = "cpp";
char insertstr[] = "hello c"; char *p = strstr(allstr, findstr);//查找字符串
if(p==NULL)
printf("空指针,意味着没有找到\n");
else
{
printf("找到%c,地址%p\n", *p, p);
char temp[];
strcpy(temp, p + );//从p+4开始拷贝
printf("%s\n", temp);
*(p + ) = '\0';
strcat(allstr, insertstr);
strcat(allstr, temp);
printf("%s\n",allstr);
}
system("pause");
}

2.字符串和整数转化

预备知识

void main() {
printf("%d,%c\n", , );//1,编号为1的字符
printf("%d,%c\n",'','');//字符‘1’的编号49,字符‘1’
printf("%d\n",''-);//
system("pause");
}

字符串转整数

#include<stdio.h>
#include<stdlib.h> int tonum(char *str) {
char *istr = str;//保留副本
int num = ,sum=;
while (*str)
{
if (*str<'' || *str>'')
return -;
str++;
num++;//计数,判断有多少位
}
//str已经到了末尾
printf("%d\n",num);
for (int i = ; i < num; i++)
{
//int wei = str[i] - 48;//这句会导致结果错误,因为在上面的while循环中,str的地址已经发生了变化
int wei = istr[i] - ;
for (int j = i+; j < num; j++)
{
wei *= ;
}
sum += wei;
}
return sum;
} void main() {
char str[] = "";
int num = tonum(str);
printf("%d\n", num);
system("pause");
}

tonum函数另解(更简单)

int tonum(char *str) {
char *istr = str;//保留副本
int num = ,sum=;
while (*str)
{
if (*str<'' || *str>'')
return -;
str++;
num++;//计数,判断有多少位
}
//str已经到了末尾,继续使用str会出现数据错误
printf("%d\n",num);
for (int i = ; i < num; i++)
{
sum *= ;
int wei = istr[i] - ;
sum += wei;
}
return sum;
}

整数和字符串互转

#include<stdio.h>
#include<stdlib.h> int tonum(char *str) {
char *istr = str;//保留副本
int num = ,sum=;
while (*str)
{
if (*str<'' || *str>'')
return -;
str++;
num++;//计数,判断有多少位
}
//str已经到了末尾,继续使用str会出现数据错误
printf("%d\n",num);
for (int i = ; i < num; i++)
{
sum *= ;
int wei = istr[i] - ;
sum += wei;
}
return sum;
} void tostr(int num,char *str) {
int wei = ;
for (int inum = num; inum; inum /= )
wei++;
printf("wei=%d\n", wei);
for (int i = wei - ; num; num /= , i--)
{
//printf("%d,%d\n", num%10,i);
str[i] = num % + ;
}
} void main() {
int num = ;
char str[] = { };//编号为0的字符
tostr(num,str);
printf("%s\n", str); system("pause");
}

3.删除字符

#include<stdio.h>
#include<stdlib.h>
#include<string.h> void main() {
char str[] = "hello yincheng,hello c,hello cpp";
char ch = 'c';//要删除的字符
char last[] = { };//创建一个空字符串 char *p = str;
int i = ;
while (*p)
{
if (*p != ch) {
last[i] = *p;
i++;
}
p++;
}
printf("%s\n", last); system("pause");
}

4.模拟银行密码验证

输入三次错误就锁定,防止暴力穷举

#include<stdio.h>
#include<stdlib.h>
#include<string.h> void main() {
char pass[] = "password";
for (int i = ; i < ; i++)
{
char input[];
gets_s(input);//VS2015采用c11新标准,使用gets_s而不是gets:输入字符串并初始化
if (strcmp(input, pass) == ) {
printf("密码正确\n");
break;
}
else
printf("输入错误,你还有%d次机会\n", - i);
if(i==)
printf("密码输入三次都失败,账户已被锁定\n");
}
system("pause");
}

5.字符串输入注意事项

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h> void main0() {
char str[];
//scanf会将空格,回车,换行,换页,制表符当做终止符停止数据输入
scanf("%s", str);
printf("%s\n",str); char str1[];
scanf("%s", str1);
printf("%s\n", str1); system("pause");
} void main() {
char str[];
gets_s(str);//接收空格和制表符,遇到换行结束
printf("%s\n", str); system("pause");
}

[c/c++] programming之路(24)、字符串(五)——字符串插入,字符串转整数,删除字符,密码验证,注意事项的更多相关文章

  1. PHP字符串指定位置插入字符串

    1.substr_replace(string,replacement,start,length);需插入时设置length为0即可 string 必需.规定要检查的字符串. replacement ...

  2. 【PHP】在目标字符串指定位置插入字符串

    PHP如何在指定位置插入相关字符串,例子:123456789变为1_23_456789插入"_"到指定的位置! (可以用作换行或者其他处理) 插入示例,具体思路在代码中有注释: & ...

  3. MySQL从删库到跑路(六)——SQL插入、更新、删除操作

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.插入数据 1.为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录的值. IN ...

  4. [c/c++] programming之路(21)、字符串(二)

    一.for /l %i in (1,1,5) do calc 等命令行参数 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #inclu ...

  5. Python之路【第五篇】:面向对象及相关

    Python之路[第五篇]:面向对象及相关   面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否 ...

  6. Python之路【第五篇】:面向对象和相关

    Python之路[第五篇]:面向对象及相关   面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否 ...

  7. MySQL数据库学习笔记(五)----MySQL字符串函数、日期时间函数

    一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左 ...

  8. R学习笔记 第五篇:字符串操作

    文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符.在R中,可以使用双引号,或单引号表示字符,函数nchar用于获得字符串中的字符数量: > s='read' > nc ...

  9. Python基础学习参考(五):字符串和编码

     一.字符串 前面已经介绍过字符串,通过单引号或者双引号表示的一种数据类型.下面就再来进一步的细说一下字符串.字符串是不可变的,当你定义好以后就不能改变它了,可以进一步的说,字符串是一种特殊的元组,元 ...

随机推荐

  1. Webshell密码极速爆破工具 – cheetah

    https://www.t00ls.net/thread-39660-1-1.html

  2. ERP实施顾问--理解客户的解决方案与实际需求

    在企业进行信息化时实施方的顾问都会来现场进行"需求调研",再根据"调研"的结果进行双方确认,确认后按此蓝本进行开发实施. 一切看上去都很美好,需求明确.开发顺利 ...

  3. git使用记录_备忘

    ---恢复内容开始--- 一.将本地的文件上传到git 1.cd 本地文件目录 2.git init git init 命令使git命令可以管理当前的目录 3.git remote add origi ...

  4. MIP是什么

    MIP (Mobile Instant Pages - 移动网页加速器), 是一套应用于移动网页的开放性技术标准.通过提供MIP-HTML规范.MIP-JS运行环境以及MIP-Cache页面缓存系统, ...

  5. 编译安装centos7 php7.2 mysql5.7 nginx1.9.9

    2018年3月12日 14:09:39 注意时效 centos7 网卡 cd /etc/sysconfig/network-scripts/ TYPE=Ethernet PROXY_METHOD=no ...

  6. socket 编程中。 服务端用到多线程

    客户端连接服务端之后, 服务端会生成与客户端交换信息的socket. 在服务端实现多线程: 为每个连接创建一个线程进行信息交换. import threading from socket import ...

  7. Java ee第三周作业

    listener: Listener是JavaWeb的三大组件Servlet.Filter.Listener之一 Listener的中文名称为监听器,它是Servlet的监听器,它可以监听客户端的请求 ...

  8. LeetCode 993 Cousins in Binary Tree 解题报告

    题目要求 In a binary tree, the root node is at depth 0, and children of each depth k node are at depth k ...

  9. Spring Boot 注解配置 day03

    一.SpringBoot注解 @PropertySource 和 @ImportResource和@Bean 1.@PropertySource 加载指定位置的配置文件(只能是properties文件 ...

  10. windows 创建共享文件夹

    1.右键要共享的文件夹----“共享”------“指定特定用户”,出现如下对话框: 2.选择“Everyone”,点击“共享”按钮,如下: 3.打开“运行“(win+r),输入上图 双反斜杠后面的内 ...