2013-06-28 2 views
0

У меня проблема. Я хочу использовать переменную C в команде оболочки (dd).Передача переменной C в команде Shell

Предположим, что abc.c - моя программа на C.

int main() 
{ 
    int block = 1313; /*any integer */ 
    system("dd if=device of=output-file bs=4096 count=1 skip=$((block))"); 
    return 0; 
} 

Теперь, если я использую 1313 вместо block в команде dd, то он работает отлично. Но когда я пишу block, тогда он записывает нули в выходной файл, так как block является программной переменной C и используется в команде оболочки.

+3

Используйте 'snprintf'. –

+1

У вас нет этого, у вас есть. И вы не знаете разницы между PHP и C, не так ли. –

ответ

6

Использование snprintf().

char buf[256]; 
const int block = 1313; 
snprintf(buf, sizeof buf, 
     "dd if=device of=output-file bs=4096 count=1 skip=%d", block); 
system(buf); 
+0

спасибо. Это помогло мне. – user2527401

+0

@unwind спасибо. – mattn