1 linux不支持c中的有些字符串函数,例如strlwr和strupr,这是个要注意的问题
2 注意不能初始定义一个字符指针,然后再通过键盘输入对这个字符指针进行赋值,
这样是错误的,会导致字符串指针中存有不确定的元素,因为初始时指针不确定,
所指向的数据多少也不确定。字符指针只能指向一个有确定地址的字符串。
例如
char *p;scanf("%s",p);
这是错误的,应该这样:
char *p,a[10];
scanf("%s",a);
p=a;
3 scanf函数:
(1)在以%d为格式输入时,空格不会作为数据输入的结束符,
例如:
scanf("%d%d",i,j);
则输入
10无论多少空格8
那么结果都是i=10,j=8
(2)但是在以%s或者%c作为输入格式时,那么空格,跳格和回车会被当作数据输入结束符,并且最后的回车符是留在输入缓存中的。
例如
char i[10];
scanf("%s",i);
如果你输入you love china!回车
那么i[10]="you",后面的都留在了缓存中,
两个scanf连用时,前一个输入时的回车符被系统识别,不会赋给第二个字符串,但是如果中间夹了个getchar函数用来接收第一个scanf输入后的回车符,那么是可以接收到的。
例如:
#include<stdio.h>
int main()
{
char c1[10],c2[10],c3;
scanf("%s",c1);
c3=getchar();
scanf("%s",c2);
printf("c1=%s",c1);
putchar(c3);
printf("c2=%s",c2);
return 0;
}
输入
edn回车
blog回车
那么c1=edn,c2=blog,c3=回车
如果删掉程序里的c3,
int main()
{
char c1[10],c2[10];
scanf("%s",c1);
scanf("%s",c2);
printf("c1=%s",c1);
printf("c2=%s",c2);
return 0;
}
那么c1=edn,c2=blog
文章评论(0条评论)
登录后参与讨论