歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Linux C 第四課

一、字符串的輸入與輸出

1.保存字符串要用數組

2.‘0’即‘\0’

3.C語言自定了函數 atoi();功能:將數字字符串轉化成相應的數字;遇到非數字的字符即停止;可以判斷正負

4.將數字字符轉化成相應的數字 :str[i] - ‘0’;(str[] 是保存字符串的數組)

5.數字轉換成相應字符串的方法:num + ‘0’

6.獲取字符串的三種方法

[code] #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的功能

[code]//實現將字符串轉化成對應的數字

#include<stdio.h>
#include<string.h>
#define MAX_SIZE 100

int 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是變量可以進行自加自減

[code]//數組的輸入輸出

#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

Copyright © Linux教程網 All Rights Reserved