⑴ 用c语言写的SHA1运行速度非常慢,大约每秒能计算300kb的数据,为什么
for(i=0;i<strlen(message);i++)这一句可能会比较费时,如果message很大的话。
其实只要先int len = strlen(message),然后
for(i=0;i < len; i++)即可。只计算一次。
⑵ c语言中向文件中写入数据
void zongpaiming()
{int a[5000],i,j;
struct student t;
FILE*fp, *fp2; // 加一个文件指针
fp=fopen("f1.txt","r");
fp2=fopen("f2.txt", "w");
// 一般这个位置还要判断文件是否打开成功
if (fp == NULL || fp2 == NULL)
{
printf("open file failed.\n");
return;
}
for(i=0;i<5000;i++)
{fscanf(fp,"%s %s %d %d %d %d %d",&stu[i].xuehao,&stu[i].name,&stu[i].bixiuchengji,&stu[i].huodongjiafen,&stu[i].shehuijiafen,&stu[i].guake,&stu[i].siji);}
fclose(fp);
for(i=0;i<4999;i++)
{for(j=i+1;j<5000;j++)
{
if(strcmp(stu[i].xuehao,stu[j].xuehao)>0)
{
t=stu[i];stu[i]=stu[j];stu[j]=t;
}
}
}
for(i=0;i<5000;i++)
{
//printf("%s\n",stu[i].xuehao);//把这句替换成下面那句
fprintf(fp2, "%s\n",stu[i].xuehao);
}
// 别忘记关闭文件句柄
fclose(fp);
fclose(fp2);
}
我就是针对你的代码和你的需求给你修改了必要的代码,至于你的代码本身要完成什么功能我并没有帮你检查
⑶ C语言程序运行是速度很慢,是什么原因
不要放在U盘中运行。不要放在桌面运行。
机子配置太差。
或者是多系统中 内存被限制在了一定范围内(这个是学校的机子一般是的。个人的不会。)。
⑷ 用C语言做(输入数据如下:先跑的速度(慢),先跑的时间,后跑的速度(快) 要求输出数据 追击时间
#include <stdio.h>
int main()
{
int Speed_F,Speed_L;
float time;
printf("请输入先跑的速度,时间:");
scanf("%d%lf",&Speed_F,&time);
printf("请输入后跑的速度:");
scanf("%d",&Speed_L);
printf("追击时间:%f.\n",time*Speed_F/(Speed_L-Speed_F));
return 0;
}
⑸ C语言文件的读取和写入不成功是什么原因
使用fopen的r方式可以实现读取,用w+方式可以实现写入。1.fopen的函数原型:FILE * fopen(const char * path,const char * mode); fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:r 以只读方式打开文件,该文件必须存在。r+ 以可读写方式打开文件,该文件必须存在。rb+ 读写打开一个二进制文件,允许读数据。rw+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)wb 只写打开或新建一个二进制文件;只允许写数据。wb+ 读写打开或建立一个二进制文件,允许读和写。wt+ 读写打开或着建立一个文本文件;允许读写。at+ 读写打开一个文本文件,允许读或在文本末追加数据。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。 返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
⑹ c语言怎么将数据写入文件
利用VC软件通过代码书写就可以将数据写入文件。
⑺ C语言,往文件中写入数据的问题
fclose(fp):函数fclose()关闭给出的文件流,
释放已关联到流的所有缓冲区.
fclose()执行成功时返回0,否则返回EOF.
加上这一句是为了保护你的文件
如果不写这句
那么别的程序也可以随意的对该文件进行写入
这样你的文件就是乱套了。
首先楼主要搞清楚getchar()是什么意思
getchar()
相当于
getc(stdin)也就是从stdin缓冲流里面读数据
你写这句也是为了防止你输入字符后后面还有残余
但是你第二个是读文件数据流
根本就没有读缓冲流
所以不写那句也可以的
不知道楼主明白否?
补充回答:
楼主没有弄明白什么是EOF
EOF常被作为文件结束的标志。EOF
的值通常为
-1
它不是字符串
他相当于宏定义
它是不会被写入到文件当中的
如楼主还有疑问
直接hi我吧
⑻ C语言中写入数据怎样才可以刷新写入谢谢!~
你好!!
不知你向文件输入的是什么数据,输入数据的函数很多,有fputc(s,fp);有fwrite()函数、、、、
下面是想文件输入字符,并把字符串中的小写字符转换成大写字符:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.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语言 写入数据 输出文件
写入数据,也就是从标准输入读数据,可以使用scanf,getchar,gets等输入函数完成。
输出文件,也就是写文件操作,可以使用标准C文件接口完成,包括fopen,fclose, fwrite,fputs,fputc,fprintf等。
以读入100个整型数,并输出到文件为例,代码如下:
#include<stdio.h>
intmain()
{
FILE*fp=fopen("out.txt","w");//以读方式打开文件out.txt。
inti,a;
for(i=0;i<100;i++)//执行100次。
{
scanf("%d",&a);//读入数据。
fprintf(fp,"%d",a);//写到文件。
}
fclose(fp);//关闭文件。
return0;
}