C语言字符串另类用法的实现
作者:Engineer-Bruce_Yang 发布时间:2023-06-19 02:05:25
标签:c++,字符串
讲这个例子前,咱们先来看一个简单的程序:
字符串数组实现数字转字母:
#include <stdio.h>
#include <string.h>
int main(void)
{
int num = 15 ;
//26个字母
const char str[] = "abcdefghijklmnopqlstuvwxyz" ;
//这个做法是将num这个十进制数通过取模转换为字母并输出,从程序看,即可知道是输出p
char a = str[num%26] ;
printf("a=%c\n",a);
return 0 ;
}
当然我们也可以这么写,用指针的形式来表示:
#include <stdio.h>
#include <string.h>
int main(void)
{
int num = 15 ;
char *str = "abcdefghijklmnopqlstuvwxyz" ;
char a = str[num%26] ;
printf("a=%c\n",a);
return 0 ;
}
同样的,结果也是和上面是一样的,我们再对这种写法进行简化,如果初学者的基础不扎实,也许一看就懵了。
#include <stdio.h>
#include <string.h>
int main(void)
{
int num = 15 ;
//char *str = "abcdefghijklmnopqlstuvwxyz" ;
char a = "abcdefghijklmnopqlstuvwxyz"[num%26] ;
printf("a=%c\n",a);
return 0 ;
}
其实不用惊讶,这样的写法和前面两种的意思是一样的,只不过将str替换成了一串字符串。正是因为有了这种做法,所以在写进制转换的时候,可以使用这样的技巧来实现,当然,作为开发者,写出可读性高的代码来说,我并不推崇这样的写法。
既然可以向上面这么写,那也就可以向下面这么写,输出的结果是4个3。
#include <stdio.h>
int main(void)
{
char *p = "0123456789abcdef" ;
putchar(p[3]);
//换行
putchar('\n');
putchar(*(p + 3));
putchar('\n');
putchar("0123456789abcdef"[3]);
putchar('\n');
putchar(*("0123456780abcdef"+3));
putchar('\n');
return 0 ;
}
来源:https://blog.csdn.net/morixinguan/article/details/77248128
0
投稿
猜你喜欢
- [LeetCode] 9. Palindrome Number 验证回文数字Determine whether an integer is
- 目录Navigator 的 push 和 pop方法代码实现最终效果Navigator 的 push 和 pop方法Navigator 导航
- 首先打开 Visual Studio Installer 可以看到vs2022 只支持安装4.6及以上的版本,如图所示。那么该如何安装4.6
- 就网络和应用程序而言,键盘快捷键很重要,今天我们要谈的便是让这类快捷键得以在Flutter运作的小部件:Focus、Shortcuts和Ac
- 概述:App几乎都离不开与服务器的交互,本文主要讲解了flutter网络请求三种方式 flutter自带的HttpClient、 第三方库h
- .c 源程序 ----- 编译 ----- 链接 ---- exe ----运行 -------->程序翻译环境和执行环境翻译环境:源
- 目录样例代码在讲 Flutter 的盒子模型前,先看看HTML 中的盒子模型。如下图所示,一个页面元素包括了与父级容器的外边距(margin
- 简介对于一个APP来说,肯定会有一个AppBar,这个AppBar一般包含了APP的导航信息等。虽然我们可以用一个固定的组件来做为AppBa
- 背景今天面试字节算法岗时被问到的问题,让我用C++实现一个softmax函数。softmax是逻辑回归在多分类问题上的推广。大概的公式如下:
- 目录为什么要使用路由Flutter路由介绍页面结构与逻辑实现关键代码页面路由跳转为什么要使用路由在之前我们的代码中,页面跳转使用的代码如下所
- 本文介绍了Flutter 通过Clipper实现各种自定义形状的示例代码,分享给大家,具体如下:ClipOval 圆形裁剪ClipOval(
- 目录效果展示剪裁 WidgetClipRRect(圆角矩形剪裁)其他属性其他形状剪裁ClipOval(椭圆剪裁)其他属性ClipRect(矩
- [LeetCode] 205. Isomorphic Strings 同构字符串Given two strings s
- 前言本文的记录如何用CustomPaint、GestureDetector实现一个进度条控件。首先需要说明的是 flutter Materi
- 前言前面介绍了APP顶部导航栏AppBar,今天来介绍下Flutter实现APP底部导航栏。我们以仿写微信的底部导航栏来举例说明。要实现类似
- 本文主要介绍我为桌面和 Web 设计的一个超级秘密 Flutter 项目使用了画布和可拖动节点界面。本教程将展示我如何使用堆栈来使用小部件完
- 概述在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手
- 上一篇Flutter页面路由及404路由拦截实现介绍了使用路由来实现页面的跳转,从而简化页面之间的耦合,并可以实现路由拦截。在实际开发中,我
- forward_list 概述forward_list 是 C++ 11 新增的容器,它的实现为单链表。forward_list 是支持从容
- flutter material widget组件之信息展示组件,供大家参考,具体内容如下widget分为两类:widgets librar