原创 linux下的c语言编写1

2010-3-25 20:49 2658 3 3 分类: MCU/ 嵌入式
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  
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条