修改字符串中特定的内容,用于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, '', 255); //对tmp[255] 进行清零
28          for (index = 5, i = 0; str[index] != ''; index++, i++) {
29              tmp[i] = str[index];
30          }
31          printf(" '/emmc/backup/update-signed.zip' -> %s
",tmp);
32          snprintf(change_file_name,255,"%s", "/sdcard");
33          strcat(change_file_name, tmp);
34          printf("filename is  : -> %s 
", change_file_name);
35     }
36 
37     if (0 == strncmp(str_a, "/sd-ext", 7) && strlen(str_a) > 7) {
38         memset(tmp, '', 255); 
39         for (index = 7, i = 0; str_a[index] != ''; index++, i++) {
40             tmp[i] = str_a[index];
41         }
42         printf(" '/sd-ext/backup/update-signed.zip' -> %s 
", tmp);
43         snprintf(change_file_name, 255, "%s", "/internal_sd");
44         strcat(change_file_name, tmp);
45         printf("Filename is : -> %s
", change_file_name);
46     }
47 
48     return 0;
49 }
50 
51 
52              
原文地址:https://www.cnblogs.com/sn-dnv-aps/p/3192298.html