📄 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 + -