作者CindyLinz (Cindy Wang)
看板C_and_CPP
標題Re: [問題] system ("")小問題
時間Sun Jul 17 17:08:20 2011
※ 引述《m211319 (豆趣的豆豆)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: linux
: 問題(Question):
: 小弟剛學c語言
: 請問一下system ("")裡面如何加變數阿
: #include <stdio>
: main()
: {
: char a[10];
: printf ("file:");
: scanf ("%s",a);
: printf ("file name:%s.c",a);
: system ("vi %s.c",a);
: }
: 這樣做無法system()指令無法讀取我輸入的變數
: 請問專家要如何去改
: 謝謝
system 不能像 printf 那樣加變數,
所以你要直接把要傳給 system 的東西一次準備好 ^^|
你可以這樣寫
#include <stdio.h>
int main(){
char a[
10];
char cmd[
15];
printf (
"file:");
scanf (
"%s",a);
printf (
"file name:%s.c",a);
sprintf(cmd,
"vi %s.c",a);
system(cmd);
return 0;
}
也就是加一個 cmd 傳給 system
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.246.249
→ firejox:要用system 需include stdlib.h 07/17 17:09
※ 編輯: CindyLinz 來自: 210.242.246.249 (07/17 17:10)
→ CindyLinz:我用 .c 檔, compiler 沒叫我就忘記了 ^^| 07/17 17:11
→ tjjh89017:所以sprintf的用法就很類似sstreama嗎? 07/17 20:32
→ CindyLinz:可以這樣類比.. 07/17 23:33
→ firejox:也可以這樣寫char cmd[15]="vi "; 07/17 23:41
→ firejox: strcat(strcat(cmd,a),".c"); 07/17 23:42
→ weiyucsie:樓上的寫法看起來有點累的樣子XD 07/18 01:59
→ firejox:其實也可以不用a直接scanf("%s",cmd+3);strcat(cmd,".c"); 07/18 02:11
→ firejox:或者另外寫一個bash然後直接system呼叫 XDD 07/18 02:23
推 Yshuan:推 sprintf第一個想到的function 07/18 16:10
※ 編輯: CindyLinz 來自: 210.242.246.249 (09/10 13:18)