首先,要存一个字符数列,我们可以定义一个数组,也可以定义一个指针。eg:有一个''pointer''字符序列,现在要存入字符序列,我们可以写成char sp[]=''pointer";也可以写成char *sp=''pointer";为了检验二者区别,现在我们在编译器输出:printf("%s ", sa); printf("%s ", sp)[不加*号]; printf("%s\n", "string");
看上去,我们可以得到pointer pointer string看上去sa和*sp并没有区别【相同的地方:数组名sa、指针sp和字符串 "string" 的值都是地址】,但是,其实它们的位置不一样数组专门开辟了一定的内存来存pointer输出,指针则指向内存中原有的“pointer”。
注:指针字符要先定义在使用,不要引用未赋值的指针。
常用的处理字符的函数:在stdio.h的头文件中,有输入字符串的函数:scanf ( )或gets ( ) 输出字符串的函数:printf ( )或puts ( ) 。
注意:getchar()是一个一个字符的输入,gets()是和scanf一样一句一句的读入,只不过gets碰到回车才停止,而scanf碰到回车或空格就停止。
eg:int a[];
用法:scanf (“%c”,a );gets(a);都可以读入数组a的内容,区别在(上文)注意那里。
字符串输入输出函数 示例:int str[]="word";
(1) printf ("%s", str); 和puts (str); 都可以输出‘word’,但是puts()可以自动换行。
字符串的复制、连接、比较、以及求字符串长度:相关函数都在头文件string.里面:字符串复制:strcpy (str1, str2)【将字符串 str2 复制到 str1 中,会覆盖前面的,当然,“\0”只有一个】 字符串连接:strcat (str1, str2)【连接两个字符串 str1 和 str2, 并将结果放入 str1中,不覆盖str1】 字符串比较:strcmp (str1, str2) 求字符串长度:strlen (str)。【两个字符串 str1 和 str2 的大小。 规则:按字典序(ASCII码序)】如果 str1 和 str2 相等,返回 0; 如果 str1 大于 str2 ,返回一个正整数; 如果 str1 小于 str2 ,返回一个负整数;主要是比较字符串首元素的地址,比较字符串的内容 字符串长度函数strlen :计算字符串的有效长度,不包括 '\0' eg:strlen ("hello") 的值是: 5。
字符串有专门的函数处理,eg:str=str1+str2;是非法的,要用strcat表连接。
意思是说:使用字符串的时候,不同于int等整型变量,比如:赋值时int的变量可以这样:min=a[i];但是如果是字符的赋值,就要换成:strcpy(min,a);【头文件string.h已写上】。
------如果你不闲麻烦,可以看看这两个代码的区别------
/*求最小数字*/
int main ( )
{ int i, n;
int x, min;
scanf ("%d", &n);
scanf ("%d", &x);
min = x;
for (i = 1; i < n; i++){
scanf ("%d", &x);
if (x < min)
min = x;
}
printf ("min is %d\n", min);
return 0;
}
/*求最小字符串*/
#include<stdio.h>
#include <string.h>
int main ( )
{ int i, n;
char sx[80], smin[80];
scanf ("%d", &n);
scanf("%s", sx);
strcpy (smin,sx);
for (i = 1; i < n; i++){
scanf ("%s", sx);
if (strcmp (sx, smin)<0)
strcpy (smin,sx);
}
printf ("min is %s\n", smin);
return 0;
}
切记, scanf里面的函数不能用&a[i],有点难解释,就是一个数字里面存一个字符串,不是存多个字符串!!我们对照最小值的代码,就像里面的x一样,通过for循环不断的覆盖上一次的值,所以是没有所谓的a[i]的说法,字符型数组一次只能存一个字符串!!
-----------------分割线------------------
为了凸显重要性,我们黏贴一遍:
切记, scanf里面的函数不能用&a[i],有点难解释,就是一个数字里面存一个字符串,不是存多个字符串!!我们对照最小值的代码,就像里面的x一样,通过for循环不断的覆盖上一次的值,所以是没有所谓的a[i]的说法,字符型数组一次只能存一个字符串!!
冷知识:%c表示输出字符【单个】 %s表示输出字符串。