字符串处理

来源:互联网 发布:减肥打卡软件 编辑:程序博客网 时间:2024/05/21 07:14

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


       以上课程设计主要是一个同学找我来帮忙的,没有直接进行编译,仅供大家参考,希望没有太多的错误,大家多多关照!

       现在还是告诉一些学弟,好好学习编程,这是你们以后找工作的本事,不要浪费时间,多花些时间在写程序上,希望你们能喜欢上编程!

 

5 0
原创粉丝点击