c語言puts和gets的用法
時(shí)間:
長思709由 分享
c語言puts和gets的用法
在語言使用過程中我們常常用到庫函數(shù),這些庫函數(shù)是又人事先編譯好的,那么它們內(nèi)部的代碼究竟如何?我們可以根據(jù)各函數(shù)的說明及其功能編譯出同樣的函數(shù)。下面我們來看看c語言puts和gets的用法分別是什么。
#include "Stdio.h"
#include "Conio.h"
char *mygets(char s[])
{ int i;
for(i=0;s[i]!='\n';i++)
s[i]=getchar();
return s;
}
int myputs(char *str)
{
int i;
for(i=0;*str!='\0';i++)
{ putchar(*str);
str++;
}
return;
}
main()
{
char *p;
myputs(gets(p));
getch();
}
從mygets函數(shù)的說明部分char *mygets(char s[])可以看到,該函數(shù)以字符指針變量為形參,最后返回一個(gè)字符指針變量。再看看函數(shù)體部分:int i; for(i=0;s[i]!='\n';i++) s[i]=getchar();for循環(huán)中將getchar()輸入的字符存放到動(dòng)態(tài)數(shù)據(jù)s[ ]中,循環(huán)條件是:s[i]!='\n' ,即是遇到回車時(shí)退出循環(huán)。
myputs函數(shù)以字符指針變量為形參返回一個(gè)整形數(shù)。for(i=0;*str!='\0';i++)的意思是:從字符串的第一個(gè)字符開始循環(huán),直到這個(gè)字符串結(jié)束就退出for循環(huán),'\0' 是字符串的結(jié)束符,任何字符串之后都會(huì)自動(dòng)加上'\0'。for循環(huán)循環(huán)體通過指針變量的移動(dòng)將指針?biāo)赶虻淖址饌€(gè)輸出,putchar(*str)是輸出指定字符,str++是移動(dòng)指針。
主函數(shù)中以新定義的指針變量p為mygets函數(shù)的實(shí)參,然后mygets函數(shù)的返回值作為myputs的實(shí)參。