字符串处理
1. 比较两个文本文件,并先打印出来是不一样的行(每行的字符文件数是不超过80)。
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE * fp1 = NULL; FILE * fp2 = NULL; char str1[100],str2[100]; fp1 = fopen("test1.txt","r"); fp2 = fopen("test2.txt","r"); while(!feof(fp1) && !feof(fp2)) { fgets(str1,99,fp1); fgets(str2,99,fp2); if(strlen(str1) != strlen(str2)) { printf("file1:%s \nfile2:%s\n",str1,str2); break; } if(strcmp(str1,str2) != 0) { printf("file1:%s \nfile2:%s\n",str1,str2); break; } } fclose(fp1); fclose(fp2); return 0; }
2. 文本文件num1.txt和num2.txt中各有一组用空格分隔的整数。将num1.txt和num2.txt联合排序,并将结果保存在num3.txt中,比如图3.1所看到的。
#include <stdio.h> #include <stdlib.h> #include <string.h> void MySort(int num[],int len) { int i,j,temp; for(i=0;i<len;i++) { for (j=0;j<len-i;j++) { if (num[j]>num[j+1]) { temp=num[j+1]; num[j+1]=num[j]; num[j]=temp; } } } } int main(void) { FILE * fp1 = NULL; FILE * fp2 = NULL; FILE * fp3 = NULL; int num[200]; int temp=0,index=0; fp1 = fopen("test1.txt","r"); fp2 = fopen("test2.txt","r"); fp3 = fopen("test3.txt","w"); while(!feof(fp1)) { fread(&temp,sizeof(int),1,fp1); num[index++]=temp; } fclose(fp1); while(!feof(fp2)) { fread(&temp,sizeof(int),1,fp2); num[index++]=temp; } fclose(fp2); MySort(num,index); fwrite(num,sizeof(int),index,fp3); fclose(fp3); return 0; }
3.现有两个文本文件db1.txt和db2.txt。db1.txt中第一列为姓名,第二列为英语成绩;db2.txt中第一列为姓名,第二列为数学成绩。通过姓名字段将db1.txt文件关联到db2.txt文件生成db3.txt文件。db3.txt文件第一列为姓名。第二列为英语成绩。第三列为数学成绩,第四列为平均成绩.
#include <stdio.h> #include <stdlib.h> #include <string.h> struct StuGrade { char* name; int score; }; int main(void) { FILE* fp1; FILE* fp2; FILE* fp3; struct StuGrade stu1[100]; struct StuGrade stu2[100]; int index1=0,index2=0; int i=0,j=0; fp1 = fopen("db1.txt","r"); fp2 = fopen("db2.txt","r"); fp3 = fopen("db3.txt","w"); while(!feof(fp1)) { fscanf(fp1,"%s %d\n",stu1[index1].name,stu1[index1].score); index1++; } fclose(fp1); while(!feof(fp2)) { fscanf(fp2,"%s %d\n",stu2[index2].name,stu2[index2].score); index2++; } fclose(fp2); for(i=0;i<index1;i++) { for(j=0;j<index2;j++) { if(strcmp(stu1[i].name,stu2[j].name) == 0) { fprintf(fp3,"%s %d %d %f\n", stu1[i].name, stu1[i].score, stu2[j].score, (stu1[i].score+stu2[j].score)*0.5); } } } fclose(fp3); return 0; }
4. 检查C源程序的圆括号和大括号是否匹配。正确的样例如:({((…)(…))}()),不对的样例如:{(})。
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char* str; int len=0,start=0; scanf("%s",str); len = strlen(str); if(len % 2 != 0) { printf("error !"); return 0; } len--; while(start != len) { if(str[start] == '{' && str[len] == '}') { start++; len--; } else { if(str[start] == '(' && str[len] == ')') { start++; len--; } else { printf("error !\n"); return 0; } } } printf("Ok !\n"); return 0; }
以上课程设计主要是一个同学找我来帮忙的。没有直接进行编译,仅供大家參考。希望没有太多的错误,大家多多关照。
如今还是告诉一些学弟。好好学习编程。这是你们以后找工作的本事,不要浪费时间,多花些时间在敲代码上。希望你们能像编程!
版权声明:本文博主原创文章,博客,未经同意不得转载。