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 ;
}
时间: 2024-10-31 05:59:32

C语言字符串的另类用法的相关文章

Delphi中字符串的另类用法

procedure TForm1.FormCreate(Sender: TObject); var str: string; n1, n2, n3: Integer; begin str := 'ABC'; n1 := Low(string); // 1 n2 := Low(str); // 1 n3 := High(str); // 3//  ShowMessageFmt('%d, %d, %d', [n1, n2, n3]);end; 以上是小编为您精心准备的的内容,在的博客.问答.公众号.

解释&amp;&amp;和||在javascript中的另类用法_基础知识

又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的 CodeStrong 就是一套非常不错的学习代码,只要看通了其整套代码,相信对Alloy的使用也基本会了- 在看其源码的同时,发现很多地方使用了诸如以下的用法: $.clouds && ($.index.add($.clouds)); 开始不是很理解,毕竟平时这样用的也少,上了下google后才知道原来这样写法非常方便好

Joomla语言翻译类Jtext用法分析_php实例

本文实例讲述了Joomla语言翻译类Jtext用法.分享给大家供大家参考,具体如下: 基本使用方法: Jtext是Joomla中实现多语言翻译的一个对象,最基本的使用方法如下: Jtext::_('LANGUAGE CODE'); 如果是作为变量的话,则直接使用,如: $var = Jtext::_('LANGUAGE CODE'); 如果需要显示出来,可以用echo的命令让它显示,这种方式在模板文件中是最常见的,如: echo Jtext::_('LANGUAGE CODE'); 语言包文件:

PHP return语句另类用法不止是在函数中_php技巧

分享下PHP return语句的另一个作用,在bbPress的代码中看到的一个奇葩使用方法. 一直以为,return只能出现在函数中,直到看了bbPress的代码: <?php require_once('./bb-load.php'); bb_repermalink(); // The magic happens here. if ( $self ) { if ( strpos($self, '.php') !== false ) { require($self); } else { requ

Javascript的&amp;&amp;和||的另类用法_javascript技巧

最近也没什么心思写文章了,感觉总有忙不完的事情,呵. 不过这些天又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的 CodeStrong 就是一套非常不错的学习代码,只要看通了其整套代码,相信对Alloy的使用也基本会了- 在看其源码的同时,发现很多地方使用了诸如以下的用法: $.clouds && ($.index.add($.clouds)); 开始不是很理解,毕竟平

C语言 字符串指针详解及示例代码_C 语言

C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在<C语言字符数组和字符串>中已经进行了详细讲解,这里不妨再来演示一下: #include <stdio.h> int main(){ char str[] = "http://c.biancheng.net"; int len = strlen(str), i; //直接输出字符串 printf("%s\n", str); //每次输出一个字符 for(i=0; i<

c语言-C语言字符串的处理问题不懂

问题描述 C语言字符串的处理问题不懂 去除字符串中间的*号列如:******ab***cdf**rty*******去除中间的*号字符串变为:******abcdfrty******* 程序如下: #include void fun( char a, char *h,char *p ) { char *q = a;//是把a的首地址给*q吗? int i = 0; while(q < h) { a[i] = *q; i++; q++; } while(q < p) { if(*q!='') {

字符串处理-求大神帮解决如下程序,最基本的C语言字符串类型,不用编太难(如下为问题要求,测试用例,输出用例)

问题描述 求大神帮解决如下程序,最基本的C语言字符串类型,不用编太难(如下为问题要求,测试用例,输出用例) Background Given an m by n grid of letters and a list of words, find the location in the grid at which the word can be found. A word matches a straight, uninterrupted line of letters in the grid.

Marquee标记的另类用法

运行下面的代码: <marquee direction="down" width="400" height="80" bgcolor="#f6f6f6"> <marquee direction="right" width="300" height="80%">网页教学网欢迎您的光临! </marquee></marquee&g