字符串与字符串函数

定义字符串的方法:
1.字符串常量
2.char数组 //这种方法数组名会看作首元素的地址的同义词,不可用++,增量运算符只能用于变量名前。 2.可以用*(head+1)这种格式 3.数组元素是变量,数组名是地址常量
3.cahr指针 //是一个指针,是变量
4.字符串数组

举例:
char character[23]= "fsdfdsf" "sdfdf";这是可以的

//把字符串看作指针
#include<stdio.h>
int main(void)
{
printf("%s,%p,%c\n","We","are",*"space farers");
return 0;
}

const char m[] ={‘d‘,‘d‘,‘\0‘ };//最后的标志结束的空格符不存在,就只是一个字符数组而不是一个字符串了

一种特殊情况:
#include<stdio.h>
int main(void)
{
char * p1 = "Klingon";
p1[0] = ‘F‘;
printf("Klingon");
printf(": Beware the %ss!\n","Klingon");

}
//编译器如果允许,可能会导致内存访问错误。编译器可能选择内存中的同一个单个的拷贝,来表示说有相同字符串的文字。意思就是说Klingon在内存中只存一份。
//于是结果中所有Klingon都变成了Flingon

字符串数组:
const char *rt[3] = {"sdf","dfafads","dfsd"};
rt实际上不存放字符串,它只是存放字符串的地址(字符串存在程序用来存放常量的那部分内存中)

rt[0]看作表示第一个字符串,*rt[0]看作表示第一个字符串的第一个字符,也可以用rt[][];

字符串输入首先要创建一个存储空间

3种读取字符串的函数: scanf()、gets()、fgets()、

1.gets()
gets()会读取换行符之前(不包括换行符)的所有字符,在这些字符后添加一个空字符(‘\0‘),然后把这个字符串交给调用它的程序。
它将读取换行符并将其丢弃,这样下一次读取就会在新的一行开始。
会返回字符串的地址

它的原型构造:
char *gets(char *s)
{
....
return (s);

}

返回的指针与传递给它的是同一个指针,输入字符串只有一个备份,放在作为函数参数传递过来的地址中。
如果出错或遇到文件结尾,就返回一个空(或0)地址,此时什么都不会读

错误检测:
while(gets(name)!=NULL);

while((ch = getchar())!=EOF);

fgets()函数修正了gets()预留的存储区溢出的问题
第二个参数指定最大读入字符数,如果参数为n,最多读入n-1个字符或读完一个换行符为止,读取到换行符会把它存到字符串内
第三个参数说明读哪一个文件,可以用在stdio.h中定义的stdin作为参数

ptr = fgets(name,MAX,stdin);//从键盘读数据

strchr()来定位和删除换行符

scanf常用来读取字符

字符串的输出

puts只要给出字符串参数的地址,会自动添加一个换行符,与gets()不读取换行符对应
字符数组字符串的名字也被看作地址
char str[] = "an apple";

puts(&str[5]);
puts(str);

fputs()可以使用stdout作为参数来进行输出显示,fputs()并不为输出自动添加换行符,与fgets()读取换行符相对应

printf()可以格式化多种数据类型,一行上输出多个字符串更加简单

ANSI C 用头文件string.h给出这些函数的原型,之前是strings.h

strlen()得到字符串的长度 strlen(string)
strcat()将第二个字符串的一份拷贝添加到第一个字符串的结尾,返回第一个参数的值(char *)
strncat(bugs,addon,13),中直到添加13个字符或遇到空字符为止
strcmp()字符串参数相同就返回0,两个指针比较的话,只会比较两个字符串的地址,第一个在前为负,按机器编码顺序,一般是ASCII码,用关系运算符对字符进行比较
可以用input[ct][0] != ‘\0‘来检测空输入行
strncmp()的第三个参数来指定比较的字符数

strcpy() 例子: char word[4][5]; .... {strcpy(word[i],temp);i++}
第一个参数可以不指向数组的开始

strncpy(),如果源字符串还没结束就达到限制,就不会添加空字符。所以一般: strncpy(word[i],temp,num-1); word[i][num-1] = ‘\0‘;//下标是从0开始的

sprintf()是在stdio.h中声明的,sprintf(formal,"%s,%d",last,num);//其中formal是数组

ANSI C库一共有2多个处理字符串的函数。

ctype.h应用于字符串的个别字符

命令行参数:
#include<stdio.h>
int main(int argc,char *argv[])
{
int count;

printf("The command line has %d arguments: \n",argc-1);
for(count = 1;count < argc; count++)
printf("%d: %s\n",count,argv[count]);
printf("\n");

}

第一个参数时命令行中的字符串数,如repeat luoj (有两个,其中repeat是可执行文件名),argv【0】存放程序本身的名字,把随后的第一个字符串赋给argv[1].

#include<stdio.h>
#include<console.h>
int main(int argc,char *argv[])
{

...
argc = ccommand(&argv);

}

Macintosh操作系统不使用命令行,可以用上面方法进行模拟

字符串转化成其他类型:
stdlib.h atoi();atof();atol(); strtol(),strtoul();strtod();

时间: 2024-11-10 15:24:43

字符串与字符串函数的相关文章

C#字符串的截取函数用法总结

这篇文章主要介绍了C#字符串的截取函数用法,实例总结了substring,Remove,indexOf等函数的用法,并对具体应用进行了实例分析,需要的朋友可以参考下 本文实例总结了C#常用的字符串截取函数用法.分享给大家供大家参考.具体分析如下: 在C#中字符串截取函数包括有substring 函数,Remove 函数,indexOf 函数,它们三个都可以对字符串进行截取操作,下面我们来分别介绍一下. 下面是截取字符串过程中我们必须知道的以下函数:substring 函数.Remove 函数.i

指针 指针与数组 指针与字符串 指针与函数 结构体与指针 宏

指针 指针与数组 指针与字符串 指针与函数?? 指针与数组 1.数组名:数组元素首地址 eg: int array[3]={1,3,6}; 这里array 恒等于&array[0] 2.int *p = a; int *p = 0; int a[]={0}; 3.int *p = a; 均指向数组的首地址 *p是? *(p+1)是?(*p)+1是? *(p+1)决定向下移动几个字节是类型 4.指针可以当数组名使用 p[1] = 3; 恒等于a[1] ;恒等于*(p+1);恒等于*(a+1) 5.

C#比较字符串及字符串常用函数

C#比较字符串及字符串常用函数示例2007年08月26日 星期日 下午 02:29用C#比较字符串有多种方法,如: 1. string.Compare(x,y);2. string.Equals(x,y) ; 如果要不区分大小写进行比较,则对应为:string.Compare(x,y);string.Equals(x,y); 注:string.Compare比较结果的含义: 值含义 小于零x 小于 y. 或 x 为 空引用(在 Visual Basic 中为 Nothing). 零x 等于 y.

PHP第八课 字符串拆分常用函数

课程概要: 通过这节课能够对字符串进行基本的操作. 字符串知识点: 1.字符串的处理介绍 2.常用的字符串输出函数 3.常用的字符串格式化函数 4.字符串比较函数 5.正则表达式在字符串中的应用 6.与per1兼用的正则表达式 1.pathinfo();//返回域名的path信息 2.parse_url(); 3.parse_str();//用来拆分参数用的 pathinfo(); <?php $str="http://blog.csdn.net/junzaivip"; $arr

Javascript 字符串组装用函数 format

if (!String.prototype.format) { String.prototype.format = function() { var args = arguments; return this.replace(/{(\d+)}/g, function(match, number) { return typeof args[number] != 'undefined' ? args[number] : match ; }); }; } Javascript 字符串组装用函数 for

【C语言】请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”

// 请实现字符串循环右移函数.列如字符串"abcdefghi"向右移2位就是"hiabcdefg" // 函数原型为:void RightLoopMove(char *pstr,unsigned short steps) #include <stdio.h> #include <assert.h> #include <string.h> void severse(char *p,char *q) //字符串翻转 { char t

JavaScript中有三个可以对字符串编码的函数,分别是: escape(),encodeURI(),encodeURIComponent()

JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数  描述  string  必需.要被转义或编码的字符串. 返回值 已编码的

Python列表、元组、字典和字符串的常用函数

Python列表.元组.字典和字符串的常用函数 列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中包含3个元组),相当于ls和object合并.注意:object如果是整型,必须以列表的方式传入,不可以以整型或元组的方式传入 2.ls.append(object) 将object作为一个整体插入到ls最后,object可以是字符串,元组,列表和字典 3.ls.insert(index, object

脚本应用之六:字符串判断&处理函数 【 functions_string1 】

测试系统版本:CentOS 6.4 作用:脚本提供判断和处理字符串的函数,可供其他脚本调用.例如:判断字符串是否都是数字\大小写字母.字符串中字母是否为大\小写以及大小写转换和字符串包含关系判断等. 使用:脚本中调用 "./source functions_string1" 代码专区: #/bin/bash #  LY #  ------------------ #  Copyright 2016.4.14, LingYi ([email protected]) QQ:15199525

返回指定字符串位置的函数FIELD(S,S1,S2,...) 与 FIND_IN_SET(S1,S2) 函数

FIELD(S,S1,S2,...)  与 FIND_IN_SET(S,S1) 函数  ------> 这2个函数都是返回指定字符串在源串中的出现的位置(皆是第一次出现的位置),但2个函数的参数不一样,前者是以列表形式的参数,后者是整体为一个整串的参数.(上边S皆为指定串,前者S1和S2为串列表,后者S1为一个整串) FIELD(S,S1,S2,...) : 返回指定字符串位置的函数FIELD(S,S1,S2,...) FIELD(S,S1,S2,...)返回字符串s在列表s1,s2,.....