C語言基礎(chǔ)

1.頭文件
1.1 引用非系統(tǒng)函數(shù)

include "max.c"

示例如下,在hello.c中引用函數(shù)max
hello.c
#include <stdio.h>
#include "max.c"http://注意此行

int main()
{
    int a1=33,a2=21;
    int maxNum=max(a1,a2);
    printf("較大值為:%d\n",maxNum);
    return 0;
}

max.c

int max(int a, int b)
{
    if(a>b){
        return a;   
    }else{
        return b;
    }
}

添加#include "max.c"后贩汉,編譯時(shí)葵诈,輸入gcc hello.c即可完成編譯哎壳;若不添加#include "max.c",編譯時(shí)需要輸入gcc hello.c max.c

2.編譯文件

gcc -c max.c -o max.o
將max.c編譯成計(jì)算機(jī)易于理解的二進(jìn)制文件max.o

3.main函數(shù)
標(biāo)準(zhǔn)形式為:

int main(int argv, char* argc[])

argv表示在終端窗口下亭罪,調(diào)用main函數(shù)輸入的命令個(gè)數(shù)复哆;argc表示輸入的命令數(shù)組欣喧。
示例:
#include <stdio.h>//該文件名為main3.c

int main(int argv, char* argc[])
{
        printf("argv is %d \n",argv);
        int i;
        for(i=0;i<argv;i++){
                printf("argc[%d] is %s\n",i,argc[i]);   
        }
        return 0;
}

在終端下輸入如下命令:

gcc main3.c -o m3.out
./m3.out -ls ddf dfkdfkadfjdfjkdk d fdk

返回值為:

argv is 6 
argc[0] is ./m3.out
argc[1] is -ls
argc[2] is ddf
argc[3] is dfkdfkadfjdfjkdk
argc[4] is d
argc[5] is fdk

4.scanf函數(shù)

scanf("<格式化字符串>",<地址表>);

4.1輸入整數(shù)
示例:
#include <stdio.h>

int main()
{
        printf("hello, world!\n");
        int a;
        scanf("%d",&a);
        printf("input value is :%d\n",a);
        return 0;
}

4.2輸入字符串
示例:
#include <stdio.h>

int main()
{
        printf("hello, world!\n");
        char a[100];
        scanf("%s",a);
        printf("input value is :%s\n",a);
        return 0;
}

5.fprintf函數(shù)與fscanf函數(shù)
fprintf函數(shù)

int fprintf(FILE * stream, const char * format, ...);

fprintf()會(huì)根據(jù)參數(shù)format 字符串來轉(zhuǎn)換并格式化數(shù)據(jù), 然后將結(jié)果輸出到參數(shù)stream 指定的文件中, 直到出現(xiàn)字符串結(jié)束('\0')為止梯找。
屏幕的FILE * stream為:stdout

fscanf函數(shù)

int fscanf(FILE *stream, char *format,[argument...]);

fscanf函數(shù)從一個(gè)流中執(zhí)行格式化輸入,遇到空格和換行時(shí)結(jié)束唆阿,注意空格時(shí)也結(jié)束。
鍵盤的FILE stream為:stdin
示例:
#include <stdio.h>
/

stdin
stdout
stderr
*/
int main()
{
// printf()
fprintf(stdout,"please input the value a :\n");
int a;
//scanf()
fscanf(stdin,"%d",&a);
if(a<0){
fprintf(stderr,"the value must > 0\n");
return 1;
}
return 0;
}

6.重定向
6.1輸出流重定向

用">>"或者">"表示輸出流重定向锈锤。
區(qū)別:">>"表示在重定向的文件末尾追加內(nèi)容驯鳖,">"表示對重定向的文件執(zhí)行寫入操作,每次寫入后久免,覆蓋原文件內(nèi)容浅辙。

示例: ./a.out >> a.txt表示將屏幕上的輸出,重定向到a.txt文件輸出阎姥。
示例:ls /etc >> etc.txt表示將/etc目錄下的文件查詢結(jié)果记舆,重定向顯示到當(dāng)前目錄etc.txt文件中。

6.2輸入流重定向

用"<"表示輸出流重定向丁寄。

示例:./a.out < input.txt表示將input.txt文件中的數(shù)據(jù)作為a.out的輸入?yún)?shù)氨淌。
示例:./a.out < input.txt > a.txt表示將input.txt的數(shù)據(jù)作為輸入?yún)?shù),a.out的執(zhí)行結(jié)果輸出到a.txt中伊磺。

6.3錯(cuò)誤流重定向

用"2>>"或者"2>"表示錯(cuò)誤流重定向盛正。

注意:2后面不能有空格。
示例:./a.out 1>t.txt 2>f.txt表示將輸出流寫入t.txt屑埋,將錯(cuò)誤流寫入f.txt豪筝。生成a.out的代碼如下:
#include <stdio.h>

int main()
{
    printf("input the int value i:\n");
    int i,j;
    scanf("%d",&i);
    printf("input the int value j:\n");
    scanf("%d",&j);
    if(0!=j){
        printf("%d/%d=%d\n", i,j,i/j);
    }else{
        fprintf(stderr,"the wrong value j: j==0\n");
        return 1;
    }
    return 0;
}

6.4正確輸出和錯(cuò)誤輸出同時(shí)保存

命令 > 文件 2>&1

以覆蓋的方式,把正確輸出和錯(cuò)誤輸出都保存到同一個(gè)文件當(dāng)中摘能。

命令 >> 文件 2>&1

以追加的方式续崖,把正確輸出和錯(cuò)誤輸出都保存到同一個(gè)文件當(dāng)中。

命令 &> 文件

以覆蓋的方式团搞,把正確輸出和錯(cuò)誤輸出都保存到同一個(gè)文件當(dāng)中严望。

命令 &>> 文件

以追加的方式,把正確輸出和錯(cuò)誤輸出都保存到同一個(gè)文件當(dāng)中逻恐。

命令 >> 文件1 2> 文件2

把正確的輸出追加到文件1像吻,把錯(cuò)誤的輸出覆蓋輸出到文件2峻黍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拨匆,隨后出現(xiàn)的幾起案子姆涩,更是在濱河造成了極大的恐慌,老刑警劉巖惭每,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骨饿,死亡現(xiàn)場離奇詭異,居然都是意外死亡台腥,警方通過查閱死者的電腦和手機(jī)宏赘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來览爵,“玉大人置鼻,你說我怎么就攤上這事◎阎瘢” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵储藐,是天一觀的道長俱济。 經(jīng)常有香客問我,道長钙勃,這世上最難降的妖魔是什么蛛碌? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮辖源,結(jié)果婚禮上蔚携,老公的妹妹穿的比我還像新娘。我一直安慰自己克饶,他們只是感情好酝蜒,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著矾湃,像睡著了一般亡脑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邀跃,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天霉咨,我揣著相機(jī)與錄音,去河邊找鬼拍屑。 笑死途戒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的僵驰。 我是一名探鬼主播喷斋,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼裁蚁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了继准?” 一聲冷哼從身側(cè)響起枉证,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎移必,沒想到半個(gè)月后室谚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡崔泵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年秒赤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憎瘸。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡入篮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幌甘,到底是詐尸還是另有隱情潮售,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布锅风,位于F島的核電站酥诽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏皱埠。R本人自食惡果不足惜肮帐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望边器。 院中可真熱鬧训枢,春花似錦、人聲如沸忘巧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袋坑。三九已至仗处,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間枣宫,已是汗流浹背婆誓。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留也颤,地道東北人洋幻。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像翅娶,于是被迫代替她去往敵國和親文留。 傳聞我的和親對象是個(gè)殘疾皇子好唯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容