将整个代码块转换为C中的一行

时间:2013-02-14 14:27:20

标签: c

比如说我想将整个代码块输入命令:

int k = 0;

for (k = 0; k < 50; k++) 
{
    sprintf(buf, "M LR 10 -10\n");                     //We put the string "M L 10" into the string buffer.
    write(sock, buf, strlen(buf));                     //We send the buffer into the socket.
    memset(buf, 0, 80);                                //Clear the buffer, set buffer to value 0.
    read(sock, buf, 80);                               //Read from the socket to get the results.
    int lme, rme;
    sprintf(buf, "S MELR\n");                          //sensor command to find ME values
    write(sock, buf, strlen(buf));                     //sends the buffer to the socket
    memset(buf, 0, 80);                                //Clear the buffer, set buffer to value 0.
    read(sock, buf, 80);                               //read from socket to get results.
    sscanf(buf, "S MELR %i %i\n", &lme, &rme);         //takes lme and rme values from results
    printf(buf, "%3i   %-4i\n", lme, rme);
    //distance = 2 * (22/7) * r
}

for (k = 50; k < 51; k++) 
{
    sprintf(buf, "C RME\n");                           //We put the string "C RME" into the string buffer to reset.
    write(sock, buf, strlen(buf));                     //We send the buffer into the socket.
    memset(buf, 0, 80);                                //Clear the buffer, set buffer to value 0.
    read(sock, buf, 80);                               //Read from the socket to get the results.
}

这使我能够只更改{sprintf(buf, "M LR 10 -10\n");}中的字符串值,即10-10,其余部分将自行执行:

例如,主代码中的set_motor_speed(10 -10\n)会执行整个功能,怎么做呢?

1 个答案:

答案 0 :(得分:5)

正如其他人所说:你可以在C语言书中读到这类事情,但是我们很高兴:

set_motor_speed(int a, int b) {
    ...
    for(k = 0; k < 50; k++) {
        sprintf(buf, "M LR %i %i\n", a, b);
        ...
    }
    ...
}

set_motor_speed(10, -10);
set_motor_speed(5, -5);