⑴ 用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;
}