用shell函数或是if语句写一个“一个字符替换一个文件夹中所有文件中的相同字符”的小程序”

用shell函数或是if语句写一个“一个字符替换一个文件夹中所有文件中的相同字符”的小程序”,第1张

是linux系统么?那推荐使用sed,一条命令即可:

比如,要将目录/modules下面所有文件中的“zhangsan”都修改成“lisi”,这样做:

sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`

解释一下参数:

-i 表示inplace edit,就地修改文件

-r 表示搜索子目录

-l 表示输出匹配的文件名

这个命令组合很强大,要注意备份文件

那你要的完整程序就是:

#!/bin/bash

read -p "请输入要替换的字符:"  var1

read -p "请输入替换后的字符串:"  var2

sed -i "s/$var1/$var2/g" `grep $var1 -rl ./modules`

exit

请注意,以上代码定义到了当前的modules目录,如果你要修改被的目录请自定义,当然你也可以使用read读取你输入的目录,依葫芦画瓢我就不多说了。

1、字符串转换成数字:

C语言库函数:atoi  实现了此功能。

int atoi(const char *nptr)

函数说明: 参数nptr字符串,如果第一个非空格字符存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。

代码如下:

#include <stdio.h>

#include <string.h>

#include <stdbool.h>

/**

*    功能:string转int

*    注意:

*    1、字符串是否为空;

*    2、忽略\t 或空格;

*    3、溢出判断;

*    4、输入字符串只有“+”或“-”号时;

*    5、扫描参数src字符串,跳过前面的空格字符,直到遇上数

字或正负符号才开始做转换,而再遇到非数字或字符串结束时

('\0')才结束转换,并将结果返回。

*/

int convertionStringToInt(char *src)

{

bool flag=false

long num=0 /*使用long类型,数据溢出情形*/

int minus=0

if((NULL == src)||('\0'== *src))  //判断如惨字符串指针是否为空

{

return 0

}

if(('\t' == *src)||(' ' == *src)) //忽略tab字符和空格字符

{

src ++

}

if('-' == *src)  //判断是否是‘+’ 或 ‘-’符号

{

flag=true

src++

}

else if('+' == *src)

{

src++

}

minus=flag?-1:1

while('\0' != *src)

{

if(('0' <= *src)&&('9' >= *src))

{

num= num*10+minus*((*src)-'0')

if((!flag &&num >0x7FFFFFFF)

|| (flag &&num <(signed int)0x80000000))    //判断转换后的整型数是否溢出,注意正负数均要判断

{

num = 0

break

}

src++

}

else      

{

break//遇到非数字字符时结束转换

}

}

return num

}

int main()

{

char data[8][15]={"4673","15234234234","-3489","+9776","ab67","123bd","+","-"}

int i=0

int val=0

for(i=0i<8i++)

{

printf("Before data[%ld]=%s       ",i,data[i])

val=convertionStringToInt(data[i])

printf("After Convert=%d\n",val)

}

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11254690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存