| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8246 人关注过本帖
标题:在别的论坛看见的问题,求解答!
只看楼主 加入收藏
大爱CATs
Rank: 4
来 自:重庆
等 级:业余侠客
威 望:3
帖 子:108
专家分:250
注 册:2015-1-13
结帖率:85.71%
收藏
已结贴  问题点数:10 回复次数:20 
在别的论坛看见的问题,求解答!
printf("请输入:\n");
               scanf("%d",&a);

          就是希望在输入数据时后面能有个%符号,并且这个符号会随着字数的增加而向后移动,类似我们输入时的光标。

举个列子:

        请输入:
        123%
        哈哈哈哈哈哈哈%
        aaaaaaaaaaaaaaaaaaaaa%
2015-03-02 21:47
大爱CATs
Rank: 4
来 自:重庆
等 级:业余侠客
威 望:3
帖 子:108
专家分:250
注 册:2015-1-13
收藏
得分:0 
看起来很简单,但是没有什么头绪,小白希望大家解答!

弹指一挥间
2015-03-02 21:48
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
程序代码:
#include <stdio.h>

int main(void) {
    char ch;
    printf("请输入:\n");
    while((ch = getchar()) != -1 && ch != 10) putchar(ch);
    puts("\%");
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-02 21:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
想當然~

授人以渔,不授人以鱼。
2015-03-02 22:01
大爱CATs
Rank: 4
来 自:重庆
等 级:业余侠客
威 望:3
帖 子:108
专家分:250
注 册:2015-1-13
收藏
得分:0 
回复 3楼 longwu9t
感谢你的回复,我发现有如下问题:
我在win8 VC6.0的环境下测试了你的代码,发现再输入字符串的时候,没有任何变化;
到我按回车的时候,后面才出现%;
我的意思是在你输入的过程中%一直在你输入的字符串的末尾~
图片附件: 游客没有浏览图片的权限,请 登录注册

弹指一挥间
2015-03-02 22:13
大爱CATs
Rank: 4
来 自:重庆
等 级:业余侠客
威 望:3
帖 子:108
专家分:250
注 册:2015-1-13
收藏
得分:0 
回复 4楼 TonyDeng
??!

弹指一挥间
2015-03-02 22:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:6 
想當然,針對兩方面:第一,你以及提出這個問題的人想得太簡單了,“看起來很簡單”才引你進入陷阱;第二是3樓的實現,效果就是你已經發現的那樣,根本無法達到目的,也是想當然寫出來的,恐怕他自己都沒執行過。

我衹能告訴你:在標準流輸入輸出的範圍内,亦即ANSI C的框架,沒有解決辦法。唯一的解決之道,是自己寫一個替代的輸入函數,別指望用標準庫的那些東西。不管是scanf()還是getchar()、gets(),都是在按下回車之後才執行後續代碼的,這個過程中,你根本就無法控制光標和它的顯示符,而解決之道,也就是必須你自己完全操控光標的移動!

授人以渔,不授人以鱼。
2015-03-02 22:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
標準庫的流輸入輸出函數,衹能處理靜態的數據流,無法應付動態的數據交互環境。當你要面對人機鍵盤對話的時候,選用流庫函數,十有八九是不如意的。這種話,其實我反復說過多次,總有人不信邪。ANSI C的東西,哪怕是很簡單的需求,都會束手無策,偏有人當聖經一樣拒絕擴展,這樣學編程,將來都不知道怎麽做實際工作。

授人以渔,不授人以鱼。
2015-03-02 22:34
大爱CATs
Rank: 4
来 自:重庆
等 级:业余侠客
威 望:3
帖 子:108
专家分:250
注 册:2015-1-13
收藏
得分:0 
回复 7楼 TonyDeng
恍然大悟!
进一步请问这个输入函数要如何编写呢?
毕竟我是C语言初学者,若是代码很长很复杂你可以直接告诉我我先放一放,简单的话恳请指点!
不管怎样万分感谢!!

弹指一挥间
2015-03-02 22:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
簡單的提示是:用_getch()函數逐個按鍵處理,大致是把3樓的getchar()用_getch()取代。tc/bc是getch(),在MSC中是_getch(),屬於非標準擴展,與平臺有關(故MSC中以下劃綫開頭,表明是微軟自己實現的),本質上是調用的API。

其實一個開發平臺,如果沒有强大的擴展,誰會用它!當年tc/bc的風行一時,也是其有諸如getch()、Graphics之類的非標準擴展庫,後來的vc也是靠mfc,現在的vc靠.net框架,都是不斷地擴展著C/C++的功能,拒絕這些擴展,還學個啥。靠ANSI C什麽都做不了,這就是很多人感嘆學了C之後啥寫不出的根本原因,因爲他們原本就拒絕學真能用的東西。好像他們非要强調void main()是錯誤的一樣,用這樣的態度學習,能有什麽出息是可想而知的。


[ 本帖最后由 TonyDeng 于 2015-3-2 22:47 编辑 ]

授人以渔,不授人以鱼。
2015-03-02 22:36
快速回复:在别的论坛看见的问题,求解答!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028112 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved