芒果没有派 2023-08-11 11:01 采纳率: 25%
浏览 11
已结题

嵌入式c语言,在这段c代码里加入一个sed i,使得开发板下的/dev/ttyUSB1被换成/dev/ttyUSB3(相关搜索:嵌入式|c语言)

            if (0 == (ret = get_keywork_from_file("/sys/kernel/debug/usb/devices", "6002", line, sizeof(line))))
            {   
                sleep(1);
                myPipe("echo -e \"AT+QCCID\r\" | microcom -t 3 /dev/ttyUSB1 2>&1", &cimi);
                sleep(1);
                myPipe("echo -e \"AT+CSQ\r\" | microcom -t 3 /dev/ttyUSB1 2>&1", &buff);
            }

在这段c代码里加入一个sed i,使得开发板下的/dev/ttyUSB1被换成/dev/ttyUSB3,应该怎么做?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-11 12:04
    关注

    【以下回答由 GPT 生成】

    你可以使用system函数来在C代码中运行shell命令,包括sed命令。以下是一个示例代码:

    #include <stdlib.h>
    #include <stdio.h>
    
    int main() {
        // 原始代码
        char code[] = "if (ret == get_keywork_from_file(\"/sys/kernel/debug/usb/devices\", \"6002\", line, sizeof(line))){\n \tsleep(1);\n \tmyPipe(\"echo -e \\\"AT+QCCID\\r\\\" | microcom -t 3 /dev/ttyUSB1 2>&1\", &cimi);\n \tsleep(1);\n \tmyPipe(\"echo -e \\\"AT+CSQ\\r\\\" | microcom -t 3 /dev/ttyUSB1 2>&1\", &buff);\n}";
    
        // 替换字符串
        char* modified_code = strstr(code, "/dev/ttyUSB1");
        if (modified_code != NULL) {
            // 创建新的字符串
            char* new_code = malloc(strlen(code) + strlen(modified_code) + 10);
            strncpy(new_code, code, modified_code - code);
            new_code[modified_code - code] = '\0';
            strcat(new_code, "/dev/ttyUSB3");
            strcat(new_code, modified_code + strlen("/dev/ttyUSB1"));
    
            // 使用sed命令替换
            char command[100];
            sprintf(command, "echo \"%s\" | sed 's/\\/dev\\/ttyUSB1/\\/dev\\/ttyUSB3/g'", new_code);
            system(command);
    
            free(new_code);
        }
    
        return 0;
    }
    

    上述代码首先在字符串中搜索/dev/ttyUSB1的位置,如果找到了,则创建一个新的字符串new_code来替换相应的部分。然后,使用sprintf函数将要执行的sed命令保存在command数组中,最后使用system函数运行该命令。

    请注意,由于在sed命令中包含了斜杠字符,所以需要使用转义字符/对斜杠进行转义。

    希望这个解决方案能对你有所帮助。如果你还有其他问题,请随时向我提问。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 创建了问题 8月11日