当前位置: 代码迷 >> C语言 >> 用scanf能否做到?
  详细解决方案

用scanf能否做到?

热度:412   发布时间:2007-07-31 14:28:51.0
以下是引用星星鱼虾蟹在2007-7-31 14:18:58的发言:
孔明啊,我看你还是不明吧.
(1)重定向不一定要在程序中实现,还可以通过特定的系统用特定的方法实现.如:某些系统可以用'>','<','|'等来实现重定向.所以版主的程序是对的.
(2)重定向只是改变某个程序的读入或输出数据的标准途径,并不是一个危险的操作,也不是不值得提倡.

哦,明白了,非常感谢!


----------------解决方案--------------------------------------------------------
以下是引用leeco在2007-7-30 14:15:35的发言:

我们用代码说话

程序代码:

#include <stdio.h>

struct sellrecord
{
char PID[5]; /*产品代码*/
char Name[10]; /*产品名称*/
float Price; /*单价*/
int Num; /*数量*/
float sum ; /*金额*/
}x;

int main()
{
while(scanf(\"PID=%[^,],Name=%[^,],Price=%f,Num=%d,%*[^\n]%*c\",&x.PID,&x.Name,&x.Price,&x.Num)){
printf(\"PID=%s,Name=%s,Price=%.2f,Num=%d,sum=;\n\",x.PID,x.Name,x.Price,x.Num);
}
}

5000条这样的数据你要用多少时间?
是你的程序读入的快 还是楼主的程序读入的快?


----------------解决方案--------------------------------------------------------
freopen函数的使用
函数名:freopen
申明:FILE *freopen(const char*path,const char *mode,FILE *stream);
所在文件:stdio.h
参数说明:
path: 文件名
mode: 文件打开的模式(如r,w),和fopen 中的相同
stream:一个文件,通常使用标准流文件(stdin,stdout,stderr).
返回值:成功,则返回一个path所指定的文件的指针。失败,返回NULL(一般不使用他的返回值)
功能:简单的说,就是实现重定向,把预定义的几个标准流文件(stdin,stdout,stderr)定向到由path指向的文件中
如下例:
int main()
{
//freopen("debug\\in.txt","r",stdin);
while(cin>>ans)
{
// to do.....

}
cout<<endl;
return 0;
}
// freopen("debug\\in.txt","r",stdin)的作用就是把stdin、重定向到debug\\in.txt文件中,这样在用cin或用scanf输入时
便不会从标准输入流提取数据。而是从in.txt中获取输入,只要把输入事先粘贴到in.txt中,调试时就会很方便了

----------------解决方案--------------------------------------------------------
希望这样的讨论能继续!
----------------解决方案--------------------------------------------------------
  相关解决方案