修改字符串中特定的内容,用于OpenRecovery Script
下面的是实例内容
目标是把OpenRecovery Script输入的内容进行修改
当有下面的输入:(作用是安装/emmc目录下面的update-signed.zip 刷机包)
install /emmc/update-signed.zip
但是twrp 中只定义了/sdcard作为内存卡,面没有定义/emmc所以就要进行目标的更换了。
用到的代码如下所示
1 /* 2 * 修改给定的字符串中相应的内容 3 * 例如 '/usr/bin' -> '/home/bin' 4 */ 5 #include <stdio.h> 6 #include <stdlib.h> 7 #include <string.h> 8 #include <unistd.h> 9 #include <sys/stat.h> 10 #include <dirent.h> 11 12 /*方法如下: 13 * 先得到字符串的长度,用strlen 14 * 再对字符串的内容进行比较,当找到相应的内容后,就进行替换 15 */ 16 int main(int argc, char *argv[]) { 17 char str[255] = "/emmc/backup/update-signed.zip"; 18 char str_a[255] = "/sd-ext/backup/update-signed.zip"; 19 char change_file_name[255]; 20 21 char tmp[255]; 22 int str_size = 0; 23 int index = 0; 24 int i = 0; 25 str_size = strlen(str); 26 if (0 == strncmp(str,"/emmc",5) && str_size > 5) { 27 memset(tmp, '\0', 255); //对tmp[255] 进行清零 28 for (index = 5, i = 0; str[index] != '\0'; index++, i++) { 29 tmp[i] = str[index]; 30 } 31 printf(" '/emmc/backup/update-signed.zip' -> %s\n",tmp); 32 snprintf(change_file_name,255,"%s", "/sdcard"); 33 strcat(change_file_name, tmp); 34 printf("filename is : -> %s \n", change_file_name); 35 } 36 37 if (0 == strncmp(str_a, "/sd-ext", 7) && strlen(str_a) > 7) { 38 memset(tmp, '\0', 255); 39 for (index = 7, i = 0; str_a[index] != '\0'; index++, i++) { 40 tmp[i] = str_a[index]; 41 } 42 printf(" '/sd-ext/backup/update-signed.zip' -> %s \n", tmp); 43 snprintf(change_file_name, 255, "%s", "/internal_sd"); 44 strcat(change_file_name, tmp); 45 printf("Filename is : -> %s\n", change_file_name); 46 } 47 48 return 0; 49 } 50 51 52
laser杨万荣