當前位置:首頁 » 編程語言 » c語言文件內容比較
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言文件內容比較

發布時間: 2022-03-05 21:35:14

❶ 編寫c語言程序,用於比較兩個正文文件內容相等(既字元相等)

本不想來啰嗦,但樓上的程序的確有缺陷。
如果兩個文件長度不同,上面的程序就會得出錯誤結果。比如頭一個文件內容為:abcde第二個文件內容為:abcdefg會得出錯誤結果。
程序改寫如下,已編譯通過:
#include <stdio.h>
#include <stdlib.h>

int main(){

FILE * f1 = fopen("dd.txt","r");/* 改為實際文件名 */
FILE * f2 = fopen("bb.txt","r");

char c1 = fgetc(f1);
char c2 = fgetc(f2);

while(!feof(f1) && !feof(f2)){

if(c1 != c2){printf("NO");system("pause");return 0;}
c1 = fgetc(f1);
c2 = fgetc(f2);
}

if(c1==EOF&&c2==EOF) /* 判斷兩個文件是否都到結尾 */
printf("YES");
else
printf("NO");
printf("\n");

fclose(f1);
fclose(f2);

system("pause");
return 0;
}

❷ C語言比較兩個txt文件是否一樣!

第一,你的第一個if語句里應該使用||而不是&&,第二,字元串比較不是直接比較的。要藉助函數strcmp(str1,str2),如果一樣就等於0

❸ C語言 對比兩個文件內容的不同

#include<stdio.h>
#include<stdlib.h>
intmain(){
charfname1[100],fname2[100];
inti,j,a[100],b[100],n=0;
FILE*fp1,*fp2;

printf("Enterfirstfilename:");
scanf("%s",fname1);//
printf("Entersecondfilename:");
scanf("%s",fname2);//

fp1=fopen("fname1","r");
for(i=0;!feof(fp1);i++){
fscanf(fp1,"%d",&a[i]);
}
fclose(fp1);
fp2=fopen("fname2","r");
for(i=0;!feof(fp2);i++){
fscanf(fp2,"%d",&b[i]);
}
fclose(fp2);
for(j=0;j<i;j++)
if(a[j]!=b[j]){n=1;
printf("%sand%sarenotthesame",fname1,fname2);break;
}
if(n==0)
printf("%sand%sarethesame",fname1,fname2);

getch();
}

❹ C語言文件比較

check the two files

❺ c語言 比較文件內容

system("FC 001.txt 002.txt");
調用DOS操作系統的FC命令 相同就返回0 不同就把每個不同點輸出來

❻ C語言中如何實現從文件讀取一數據並和用戶輸入的進行比較

#include<stdio.h>

intmain()
{
FILE*fp=NULL;
charstr[100]={0};
charinput[100]={0};
fp=fopen("password.txt","r");
if(fp==NULL)
{
printf("openfilefailed ");
return-1;
}
fgets(str,sizeof(str),fp);
fclose(fp);
printf("pleaseinputpassword: ");
gets(input);

if(strcmp(input,str)==0)
{
printf("welcomelogin ");
}else
{
printf("passwordiswrong ");
}

return0;
}

❼ C語言指針讀取文件內容比對

  • 基本的,你的代碼有語法錯誤 printf(「登錄失敗」);這里的符號不是英文符號

  • 文本中保存的是兩個字元串(空格隔開),你是想讓第一個作為帳號,第二個為密碼嗎

  • fgets你指定了大小100,而且沒有那麼多字元能讀取,所以它把整個文件中的所有字元都讀取了,包含空格,gets()也一樣。

  • 所以你輸入帳號加密碼,中間用空格隔開才是正確的輸入方式

  • 然後我試了你的代碼,得到了正確的結果,文本中保存的123456 789//注意如果後面有回車換行也可能造成你的錯誤

❽ 100分 c語言對比兩個文件

最長公共子序列方法比較兩個文件的相似性。輸入兩個文件的名字,輸出一個文件,不同的地方用紅色標出。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define max(x,y) (((x)>(y))?(x):(y))

int LCS(char *str1, char *same1, int len1, char *str2, char *same2, int len2)
{
int same, i, j;
int **midLCS;

midLCS = (int **)malloc(sizeof(int *) * (len1 + 1));
for (i = 0; i <= len1; i++) {
midLCS[i] = (int *)malloc(sizeof(int) * (len2 + 1));
}
for (i = 0; i <= len1; i++) {
midLCS[i][0] = 0;
}
for (i = 0; i <= len2; i++) {
midLCS[0][i] = 0;
}

for (i = 1; i <= len1; i++)
{
for (j = 1; j <= len2; j++)
{
if (str1[i - 1] == str2[j - 1]) {
midLCS[i][j] = midLCS[i - 1][j - 1] + 1;
}
else {
midLCS[i][j] = max(midLCS[i - 1][j], midLCS[i][j - 1]);
}
}
}

for (i = len1, j = len2; i > 0 && j > 0; )
{
if (str1[i - 1] == str2[j - 1]) {
same1[i - 1] = 1;
same2[j - 1] = 1;
--i;
--j;
}
else if (midLCS[i - 1][j] > midLCS[i][j - 1]) {
--i;
}
else {
--j;
}
}

same = midLCS[len1][len2];
for (i = 0; i <= len1; i++) {
free(midLCS[i]);
}
free(midLCS);

return same;
}

void show_compare(char *str, char *same, int len, FILE *fout)
{
int i, flag = 0;

for (i = 0; i < len; i++)
{
if (str[i] == '\n') {
fprintf(fout, " <br> ");
}
else if (str[i] == '\t') {
fprintf(fout, " ");
}
else {
if (same[i] == 1) {
if (flag == 1) {
fprintf(fout, " </font> ");
flag = 0;
}
fputc(str[i], fout);
}
else {
if (flag == 0) {
fprintf(fout, " <font color=red> ");
flag = 1;
}
fputc(str[i], fout);
}
}
}
if (flag == 1)
fprintf(fout, " </font> ");
}

int main()
{
int i, len1, len2;
FILE *fin1, *fin2, *fout;
char buf[1024];
char *str1, *str2, *same1, *same2;

printf("file1: ");
scanf("%s", buf);
fin1 = fopen(buf, "rb");
if (fin1 == NULL) {
printf("%s not exist!\n", buf);
return 0;
}
printf("file2: ");
scanf("%s", buf);
fin2 = fopen(buf, "rb");
if (fin2 == NULL) {
printf("%s not exist!\n", buf);
return 0;
}
fout = fopen("compare.html", "w+");

fseek(fin1, 0, SEEK_END);
len1 = (int)ftell(fin1);
fseek(fin1, 0, SEEK_SET);
fseek(fin2, 0, SEEK_END);
len2 = (int)ftell(fin2);
fseek(fin2, 0, SEEK_SET);

str1 = (char *)malloc(sizeof(char) * len1);
str2 = (char *)malloc(sizeof(char) * len2);
same1 = (char *)malloc(sizeof(char) * len1);
same2 = (char *)malloc(sizeof(char) * len2);
fread(str1, 1, len1, fin1);
fread(str2, 1, len2, fin2);

LCS(str1, same1, len1, str2, same2, len2);

show_compare(str1, same1, len1, fout);
fprintf(fout, " ----------------------------------------------------------------<br> ");
show_compare(str2, same2, len2, fout);

free(str1);
free(str2);
free(same1);
free(same2);
fclose(fin1);
fclose(fin2);
fclose(fout);

}

❾ C語言打開TXT文檔並且把裡面內容進行比較

如果都是逗號『,』分隔的話,在putchar(ch);後判斷ch是不逗號就可以了,

if(','==ch)printf("
");

❿ 編寫C語言程序,用於比較兩個正文文件內容相等(既字元相等)

本不想來啰嗦,但樓上的程序的確有缺陷。
如果兩個文件長度不同,上面的程序就會得出錯誤結果。比如頭一個文件內容為:abcde第二個文件內容為:abcdefg會得出錯誤結果。
程序改寫如下,已編譯通過:
#include
<stdio.h>
#include
<stdlib.h>
int
main(){
FILE
*
f1
=
fopen("dd.txt","r");/*
改為實際文件名
*/
FILE
*
f2
=
fopen("bb.txt","r");
char
c1
=
fgetc(f1);
char
c2
=
fgetc(f2);
while(!feof(f1)
&&
!feof(f2)){
if(c1
!=
c2){printf("NO");system("pause");return
0;}
c1
=
fgetc(f1);
c2
=
fgetc(f2);
}
if(c1==EOF&&c2==EOF)
/*
判斷兩個文件是否都到結尾
*/
printf("YES");
else
printf("NO");
printf("\n");
fclose(f1);
fclose(f2);
system("pause");
return
0;
}