• Linux下的C语言读写练习(二)


    习题一:在当前目录里有一个文件 内容是

    This is a c program  程序

    现在通过C语言来实现查找指定的字符

    如果输入is 则返回2

    如果输入si 则返回0

    下面习题答案,在算法上可能不是最佳

    使用方法是 gcc 编译后 ./a.out  文件名  指定字符(不超过5个)

    #include<stdio.h>
    #include<stdlib.h>
    #include<unistd.h>
    #include<fcntl.h>
    #include<string.h>
    int main(int argc,char *argv[2])
    {
    int fd,i,j,m,n;
    int s;
    int num=0;
    char buf[200];
    char buff[5];
    int len;
    n=0;
    if(argc!=3)
    {
    printf("please input a file or input a string");
    exit(0);
    }
    if(strlen(argv[2])>5)
    {
    printf("out of the string only 5 ");
    exit(0);
    }
    fd=open(argv[1],O_RDWR);
    if(fd==-1)
    {
    printf("open file error");
    exit(0);
    }
    //read
    len = read(fd,buf,200);
    j=strlen(buf);
    strcpy(buff,argv[2]);
    m=strlen(buff);
    printf("%d
    ",m);
    //printf("text:%s",buf);
    printf("string :%s 
    ",buff);
    for(i=0;i<j;i++)
    {
    switch(m)
    {
    case 1:
    if(buff[0]==buf[i])
    {
    num++;
    }
    break;
    case 2:
    if(buff[0]==buf[i])
    {
    if(buff[1]==buf[i+1])
    {
    num++;
    i++;
    }
    }
    break;
    case 3:
    if(buff[0]==buf[i])
    {
    if(buff[1]==buf[i+1])
    {
    if(buff[2]==buf[i+2])
    {
    num++;
    i+=2;
    break;
    }
    }
    }
    break;
    case 4:
    if(buff[0]==buf[i])
    {
    
    if(buff[1]==buf[i+1])
    {
    
    if(buff[2]==buf[i+2])
    {
    
    if(buff[3]==buf[i+3])
    {
    num++;
    i+=3;
    break;
    
    }
    }
    }
    }
    break;
    case 5:
    if(buff[0]==buf[i+1])
    {
    if(buff[1]==buf[i+2])
    {
    if(buff[2]==buf[i+3])
    {
    if(buff[3]==buf[i+4])
    {
    if(buff[4]==buf[i+5])
    {
    num++;
    i+=4;
    break;
    
    }
    }
    }
    }
    }
    break;
    
    
    }
    }
    printf("%s",buf);
    
    printf("
     num=%d
    ",num);
    
    printf("%s",argv[1]);
    close(fd);
    return 0;
    }

    习题二:在当前目录里有一个文件 内容是

    This is a C program!

    现在编程将其中的小写字母修改为大写字母,并修改到文件里

    使用方法gcc  编译后

    ./a.out 文件名

    在程序运行后输入要修改的单个字符,并修改文件替换原文件

    #include<unistd.h>
    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
    #include<fcntl.h>
    #include<sys/types.h>
    int main(int argc,char * argv[])
    {
    int fd,length,i,j,m,n;
    char buff[50];
    char c;//change
    //argc
    if(argc!= 2)
    {
    printf("please input a file  ");
    exit(0);
    }
    //open
    fd=open(argv[1],O_RDWR);
    if(fd== -1)
    {
    printf("open file error");
    exit(0);
    }
    n=read(fd,buff,50);
    //calc
    printf("the buff: %s
    ",buff);
    length=strlen(buff);
    printf("the length :%d
    ",length);
    //input
    printf("please input a char: ");
    scanf("%c",&c);
    printf("the old text
    ",buff);
    for(i=0;i< length;i++)
    {
    if(buff[i]== c)
    {
    buff[i]=buff[i]-32;
    }
    }
    lseek(fd,0,SEEK_SET);
    write(fd,buff,length);
    
    
    printf("the new changed text:%s",buff);
    close(fd);
    return 0;
    }
    

      

  • 相关阅读:
    使用Delphi自带的TDockTabSet组件实现停靠功能(Jeremy North)
    揭秘换肤技术(转载)
    cdecl、stdcall、fastcall函数调用约定区别(转)
    Delphi XE的RTTI增强,动态Hook某些内部事件
    sizeof和strlen解析
    由swap引出的局部变量,形参和指针的小问题
    单链表的逆置算法
    关于C++中的虚拟继承的一些总结
    关于"引用"的几点说明
    求最长公共子序列(子序列在原串中可以不连续)
  • 原文地址:https://www.cnblogs.com/a986771570/p/8127056.html
Copyright © 2020-2023  润新知