?? c73.htm
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>字符串輸入和輸出 </title>
<script language="javascript">
var prePage="http://www.nec.sjtu.edu.cn/support/Course/C/c/c7/c/c7/c72.htm";
var nextPage="c/c7/c74.htm";
function showwin(url,winname,properties){
window.open(url,winname,properties)
}
</script>
<link rel="stylesheet" href="../cstyle.css" type="text/css">
<bgsound src="../voice/c73.au" loop="1">
</head>
<body background="../img/mainback.jpg" bgproperties="fixed">
<h2 align="center"><font face="楷體_GB2312"><a name="_top"></a>7.3
字符串輸入和輸出</font></h2>
<table border="0" width="100%">
<tr>
<td width="25%" align="center"><a href="c73.htm#c731.html#c731">字符串輸入</a></td>
<td width="25%" align="center"><a href="c73.htm#c732.html#c732">字符串輸出</a></td>
<td width="25%" align="center"><a href="c73.htm#c733.html#c733">實例</a></td>
<td width="25%" align="center"><a href="c73.htm#c734.html#c734">練習題</a></td>
</tr>
</table>
<hr>
<h3><a name="c731"></a>1.字符串輸入</h3>
<blockquote>
<p>字符串的輸入分為兩步:<br>
* 字符串存儲空間的分配;<br>
* 利用輸入函數來讀入字符串。<br>
<br>
當讀入一個串時,
第一件要做的事情是分配一塊空間來存放串。這意味著申請足夠的存貯空間存放我們讀入的無論多長的串。
(不要期望計算機在讀串時計算串的長度然后為它分配空間,
它不會做的) 請你象這樣試一下:<br>
static char *name;<br>
...<br>
scanf("%s",name);</p>
<p class="note">它很可能被編譯器接受。但是當 name 被讀入時,
它將覆蓋程序中的數據和代碼。</p>
<p>最簡單的方法是在說明語句中包括明確的數組長度說明。<br>
array name[6];<br>
<br>
一旦你已經為一個字符串申請了空間,
你就可以讀入這個字符串了。輸入函數的定義不屬 C 語言。<br>
但是, 幾乎所有的系統都有 scanf() 和 gets() 這兩個函數,
它們都能讀入字符串。最普通的方法是用 gets()。</p>
<p>我們首先討論 <a href="javascript:showwin('c73_11.htm',null,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,copyhistory=0,width=600,height=600')">gets()
函數。</a> <img src="../img/lefthand.gif" alt="lefthand.jpg (983 bytes)" WIDTH="45" HEIGHT="20"><br>
</p>
<p>現在, 讓我們看一下<a href="javascript:showwin('c73_13.htm',null,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,copyhistory=0,width=600,height=600')">scanf()
函數。 </a><img src="../img/lefthand.gif" alt="lefthand.jpg (983 bytes)" WIDTH="45" HEIGHT="20"><br>
</p>
<p align="right"><a href="c73.htm#_top.html#_top">返回頁首</a></p>
</blockquote>
<hr>
<h3><a name="c732"></a>2.字符串輸出</h3>
<blockquote>
<p>字符串的輸出, 正如字符串輸入, 必須依賴于庫函數, 這種庫函數是
puts() 和 printf()。<br>
<br>
我們先看一下 <a href="javascript:showwin('c73_21.htm',null,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,copyhistory=0,width=600,height=600')">puts()
函數</a>。<img src="../img/lefthand.gif" alt="lefthand.jpg (983 bytes)" WIDTH="45" HEIGHT="20"></p>
<p>我們再來看一下 <a href="javascript:showwin('c73_22.htm',null,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,copyhistory=0,width=600,height=600')">printf()
函數</a>。<img src="../img/lefthand.gif" alt="lefthand.jpg (983 bytes)" WIDTH="45" HEIGHT="20"><br>
<br>
</p>
<p align="right"><a href="c73.htm#_top.html#_top">返回頁首</a></p>
</blockquote>
<hr>
<h3 align="left"><a name="c733"></a>3.實例</h3>
<blockquote>
<p align="left">你在輸入輸出時并不局限于這些函數,
如果你沒有這些庫函數或不喜歡它們, 你可以在 getchar() 和 putchar()<br>
的基礎上做你自己的版本。<br>
<br>
假設你沒有 puts() 函數, 這里就有一種方法。<br>
<br>
put1(char *string)<br>
{<br>
while (*string != '\0')<br>
putchar(*string++);<br>
putchar('\n');<br>
}<br>
<br>
字符指針 string
初始時指向調用參數的頭一個單元。在每一個單元中的字符被打印完之后,
指針自增并且指向下一個單元。(我們在第一課中已經介紹過。)如此繼續下去直到指向空字符的單元。然后在尾部緊接著一個換行符。<br>
<br>
假設你有 puts() 函數,
但你需要一個可以告訴你打印了多少字符的函數,
這種功能很容易加上的。<br>
<br>
put2(char *string)<br>
{<br>
int count=0;<br>
while(*string != '\0')<br>
{<br>
putchar(*string++);<br>
count++;<br>
}<br>
putchar('\n');<br>
return(count);<br>
}<br>
<br>
這里有一個說明函數嵌套的較詳細的例子:<br>
<br>
#include <stdio.h><br>
main()<br>
{<br>
put1("If I'd a lot of money,");<br>
printf("I count %d characters.\n",put2("I'd go around
world.");<br>
}<br>
<br>
好, 我們已經用函數 printf() 打印了 put2() 的值, 但是在查找 put2()
的值的動作中, 計算機必須運行它, 才能形成要打印的字符串。<br>
<br>
輸出<br>
If I'd a lot of money,<br>
I'd go around world.<br>
I count 20 characters.<br>
<br>
你現在應該使用 getchar() 來建立一個工作用版本 gets() 了, 這和構造
puts() 函數很相近, 這件事情留給你自己去做。</p>
<p align="right"><a href="c73.htm#_top.html#_top">返回頁首</a></p>
</blockquote>
<hr>
<h3><a name="c734"></a>4.練習題</h3>
<blockquote>
<p>準備好了嗎?我們來做兩道習題吧。</p>
<p><a href="javascript:showwin('c73_41.htm',null,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,copyhistory=0,width=700,height=600')">練習題一
</a><img src="../img/lefthand.gif" alt="lefthand.jpg (983 bytes)" WIDTH="45" HEIGHT="20"><br>
</p>
<p><a href="javascript:showwin('c73_42.htm',null,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,copyhistory=0,width=700,height=600')">練習題二
</a><img src="../img/lefthand.gif" alt="lefthand.jpg (983 bytes)" WIDTH="45" HEIGHT="20"><br>
</p>
<p align="right"><a href="c73.htm#_top.html#_top">返回頁首</a></p>
</blockquote>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -