扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
你好!!
创新新互联,凭借十余年的成都网站设计、成都网站建设、外贸网站建设经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有上1000+案例。做网站建设,选创新互联建站。
不知你向文件输入的是什么数据,输入数据的函数很多,有fputc(s,fp);有fwrite()函数、、、、
下面是想文件输入字符,并把字符串中的小写字符转换成大写字符:
#includestdio.h
#includestdlib.h
#includectype.h
int main()
{
FILE *fp;
char filename[20];
printf("请输入文件的名称:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open file !!!\n");
exit(0);
}
printf("请输入字符直至结束(ctrl +z):");
fflush(stdin);
char s;
while(scanf("%c",s)!=EOF)
{
if(islower(s))
s=toupper(s);//把小写字符转换成大写字符
fputc(s,fp);
}
rewind(fp);//是位置指针重新返回文件的开头,此函数没有返回值
if((fp=fopen(filename,"r"))==NULL)//以读的方式打开文件
{
printf("cannot open file !!!\n");
exit(0);
}
while(!feof(fp))
{
s=getc(fp);
putchar(s);
}
return 0;
}
测试:
请输入文件的名称:hello
请输入字符直至结束(ctrl +z):hello world !
Z
Z
HELLO WORLD !
Press any key to continue
由于c语言标准库函数,没有Sleep延时程序,需要自己编写,主要通过循环判断difftime函数返回的时间差来实现延时,具体代码如下,
#include stdio.h
#include time.h
//延时程序
void sleep(int s)
{
time_t tmp1=time(NULL);
time_t tmp2=tmp1;
while(difftime(tmp2,tmp1)s)//延时s秒后结束
{
tmp2=time(NULL);
}
}
int main(int argc, char *argv[])
{
int i=1;
while(i)
{
printf ("%d : %s \n",i++,__TIME__);//打印i及程序编译时间
sleep(1);
system("cls"); //清屏
}
return 0;
}
函数double difftime(time_t time2, time_t time1);返回两个time_t型变量之间的时间间隔,即 计算两个时刻之间的时间差。time1计时开始时间,time2计时结束时间,不断更新time2直至(time2-time1)为所需要的延时时间即可。
rand()函数 返回值是产生一个随机数,这个返回值虽然是随机数,但是可能会发现,每回产生的都一样,比如:
#include iostream
using namespace std;
void main()
{
for(int i=0;i3;i++){
coutrand()endl;
}
}
运行程序后发现,产生的随机数,虽然每次运行程序时是随机数,但是,后来再运行程序,发现与上几次结果一样。
这是因为,随机数的起始值都一样。
为了产生真正的随机数,就应该设置随机数的起始值,这个要利用srand()函数。
将上面程序改为:
#include iostream
using namespace std;
void main()
{
cout"请输入随机数的起始值"endl;
int num;
cinnum;
srand(num);
for(int i=0;i3;i++){
coutrand()endl;
}
}
运行程序 就会发现 输入的起始值不同,产生的随机数就不同。
当然 也可以产生时间随机数,这个要用到c语言time.h中的程序,这个可以供你自己思考,自己解决问题,乐趣更多呢~呵呵~
啰嗦这么多 希望对您有所帮助!
使random函数刷新更快的方法:
1、利用无参构造函数,既然它是采用系统时间作为随机种子,而取到的系统时间相同,才造成生成了重复的随机数,因此我们可以在生成一个随机数后延时一段时间,让它下次不取到相同的系统时间,这样随机种子也就不相同了。延时可以考虑使用Thread、Sleep(100),这里是延时0.1秒。
2、利用带参构造函数,我们想办法去生成尽可能不重复的随机种子。注意到MSDN中介绍Random、NextBytes方法时,有这样一句话“要生成适合于创建随机密码的加密安全随机数,请使用如RNGCryptoServiceProvider、GetBytes这样的方法。
3、它包含的意义是微软已经有现成的东西生成随机的密码,那我们就可以拿来用用了。我们就用它来生成我们的随机种子。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流