字符串可以看成字符的一个数组叫字符数组,定义和数组一样定义,为
char i[5];初始化有以下几种
1. 和数组一样定义如char i[4]={‘d’,’z’,’’,’y’,’\0’};这种必须加上’\0’
2. 上述比较麻烦,这样更简单一下 char i[4]=”dzy”,也可以加上{} char i[4]={”dzy”}和上边数组就很像了,但字符串为字符后边加‘\0’就是char i[4]=”dzy”实则为4个字符。
但下边定义为错误的,字符串不能直接赋值给字符数组类似数组。
#include <stdio.h>
void main()
{
char i[3];
i="sb"//这是错误的
printf("%s\n",i);
}
字符的输入和输出各有两种先说输入
1当成字符一个个输入需要用for循环如
#include <stdio.h>
void main()
{
chari[3],j;
for(j=0;j<3;j++)
scanf("%c",&i[j]);
printf("%s/n",i);
}
这个运行结果为
输入的为dzy因为for循环输入的仅为单个字符没有输入\0所以输出到y时还会输出但这样输入不能输入空格所以用getchar可以
2.#include<stdio.h>
void main()
{
chari[3],j;
for(j=0;j<3;j++)
i[j]=getchar();
printf("%s/n",i);
}
d y 后边还有的原因和上述一样
上述的比较麻烦用以下两种比较简单
3. 用%s可以整个输入且直接会在后边加\0,可以用scanf输入但不能输入空格因为scanf遇到空格就结束了如下
#include<stdio.h>
voidmain()
{
char i[3],j;
scanf("%s",&i);
printf("%s\n",i);
}
仅能输出how
用gets函数可解决
4 #include <stdio.h>
void main()
{
chari[12],j;
gets(i);
printf("%s\n",i);
}
输出和输入一样有以下几种
1可单个字符输出如
#include <stdio.h>
void main()
{
chari[12],j;
gets(i);
for(j=0;j<12;j++)
printf("%c",i[j]);
}
2可以用putchar函数进行输出单个字符如
#include <stdio.h>
void main()
{
chari[12],j;
gets(i);
for(j=0;j<12;j++)
putchar(i[j]);
}
比较麻烦还是用%s整个输出比较好如下
#include <stdio.h>
void main()
{
chari[12],j;
gets(i);
printf("%s\n",i);
}
3可用字符串输出函数puts进行输出
如
#include<stdio.h>
void main()
{
chara[8];
gets(a);
puts(a);
}
这样更为简单呢另外puts函数还可作为指针进行指定输出如
#include<stdio.h>
void main()
{
chara[8];
gets(a);
puts(a+3);
}
可输出第四个字母及以后的字母。
总结:不是特别要求用gets函数整个输入,用%s printf或puts 进行整个输出。
一段有意思的代码
#include<stdio.h>
void main()
{
chara[80]="Your name is ";
printf("Hienter your name ok?\n");
gets(a+13);
puts(a);
}
这样就可以不再单纯的用printf函数了,可以用数组,需要注意的是gets函数相加的必须是数组初始化的个数如上边就必须是13若是14的话puts函数就会读取到数组is后边的14位的一个空语句也就停止了,而是12的话就会覆盖到is的s所以必须是相加13也就是字符数组的第14个元素。后来我在字符数组上加了个空格也就是s后边还有空格。