Linux C 第四课

来源:互联网 发布:健康体检软件 编辑:程序博客网 时间:2024/06/06 08:37

一、字符串的输入与输出
1.保存字符串要用数组
2.‘0’即‘\0’
3.C语言自定了函数 atoi();功能:将数字字符串转化成相应的数字;遇到非数字的字符即停止;可以判断正负
4.将数字字符转化成相应的数字 :str[i] - ‘0’;(str[] 是保存字符串的数组)
5.数字转换成相应字符串的方法:num + ‘0’
6.获取字符串的三种方法

 #include<stdio.h>int main(){    int i = 0;    char src[100];    char ch;    //方法一scanf();这种方法有缺陷,即只能获取不带   空格的字符串    printf("请输入一个字符串:\n");    scanf("%s",src);        //可以改进scanf("%[^\n]",src);      //%[^EOF]可以控制输入到EOF的时候停止    printf("scr = %s\n",src);    getchar();     //此处添加getchar();上次输入带来的'\n'垃圾值    //方法二gets();可以获得句子字符串    //危险函数,使用gets可以无限输入    printf("请输入一个字符串:\n");    gets(src);    printf("src = %s\n",src);    //方法三getchar();    //使用getchar();可以一个字符一个字符的输入    //当字符串超出规定长度,报错,自动截取    printf("请输入一个字符串:\n");    while((ch = getchar()) != '\n')    {        src[i] = ch;        i++;        if(i == 9)//字符串规定长度为9        {            printf("error!");            break;        }    }    src[i] = '\0';    printf("src = %s\n",src);    return 0;}

6.实例:将字符串转化成对应的整数,要求模仿C语言自带函数atoi的功能

//实现将字符串转化成对应的数字#include<stdio.h>#include<string.h>#define MAX_SIZE 100int my_atoi(char *str){    int i = 0;    int flag = 1;    int result = 0;    int len;    len = strlen(str);    //处理字符串的首个字符为'-'的问题    if(str[0] == '-')    {        flag = -1;        i = 1;    }    for(;i < len;i++)    {        if((str[i] >= '0' && str[i] <= '9'))        {            result = result * 10 + (str[i] - '0');        }        else  //当遇到的字符不是数符的时候,停止循环        {            break;        }    }    return result * flag;}int main(){    char str[MAX_SIZE];    int result;    printf("please enter a string:\n");    scanf("%s",str);    printf("str = %s\n",str);    result = my_atoi(str);    printf("result = %d\n",result);    return 0;}

二、格式化输入
1.格式化就是按照scanf中给定的格式输入,否则就会出错
2.%d 整型
%c 字符型
%f float型
%lf double型
%s 字符串型
%p 地址
三、数组的输入输出
1.数组名:代表数组的地址,是常量,不可以进行自加自减
2.数组首元素的地址代表数组的地址
3.数组输入输出的方式
4.int *p = a;(a是数组名)//p是变量可以进行自加自减

//数组的输入输出#include<stdio.h>int main(){    int i;    int a[3];    int *p = a;    printf("输入数组的值:\n");    for(i = 0;i < 3;i++)    {        scanf("%d",&a[i]);        //scanf("%d",a + i);        //scanf("%d",p++);    }    printf("输出数组的值:\n");    for(i = 0;i < 3;i++)    {        printf("a[%d] = %d\n",i,*(a + i));        //printf("a[%d] = %d\n",i,a[i]);        //printf("a[%d] = %d\n",i,*p));p++;    }    return 0;}

四、printf的注意事项
1.printf是行缓冲,最后要加 ‘\n’ 才能输出
2.scanf 与 printf 使用的是同一个缓冲区,所以当printf后面有scanf时也可以输出
3.程序执行完成后要清理缓冲区

☆ 程序中要返回局部变量地址时,加static 以防止出错

五、i++ & ++i
1.i++是使用完(遇到结束标志),再自加一
2.++i是先加一,再使用
3.例:
i = 2;
num = (i++)+(i++)+(i++)+(i++);
//num = 8 i = 6
num = (++i)+(++i)+(++i)+(++i);
//num = 19 i = 6
4.函数是从右边开始传参,且;,( 都是结束标志
规律:++i,被替换成变量名i
i++,被替换成数值
变量名i,依然是i
f(++i,++i,i++,++i,i++);
//7,7,4,7,2
f(i++,++i,i,i++,++i);
//5,6,6,3,6

0 0
原创粉丝点击