栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C程序设计语言(K&R第二版):练习4-7

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C程序设计语言(K&R第二版):练习4-7

题目:

编写一个函数ungets(s), 将整个字符串s压回到输入中。ungets函数需要使用buf和bufp吗?它能否仅用ungetch函数?

自我解答:

ungetch函数实现了把一个字符压回到输入中,所以把字符串s压入到输入中可以选择调用ungetch函数而避开直接操作buf和bufp。

void ungets(char s[])
{
    int i;
    for(i = 0; s[i] != ''; i++)
        ungetch(s[i]);
}

参考答案:

void ungets(char s[])
{
    int len = strlen(s);
    void ungetch(int);
    while(len > 0)
        ungetch(s[--len]);
}

变量len中保存着字符串s的字符个数(但不包含最末尾的‘’字符),这个数值是由库函数strlen(参见教材第31页)确定的。

函数ungets将调用函数ungetch(参见教材第67页)len次,每次都会把字符串s中的一个字符重新压回输入。ungets函数将按逆序把字符串重新压回输入。

ungets函数不需要直接对buf和bufp进行操作,buf、bufp和出错检查将由ungetch处理。

总结:

关于题目中需不需要使用buf和bufp,自我解答和参考答案是一致的。但是自我解答中并没有考虑把字符串按照逆序进行压回。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676164.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号