2015-10-15 213 views
0

我做我的C首先練習,想做到以下幾點:轉義C字符串花括號

與我的C代碼組合運行的程序按以下格式讀取輸入(我不能改變的):

{"inputname":0}

我的C代碼應該從命令行輸入中讀取字符串。如果我輸入上面引用的確切形式,它工作正常。但是,在命令行中添加花括號很煩人(例如,我的程序不會讓我編寫它們)。

所以想拼湊的輸入,並把括號圍繞它自動地將碼內,所以從指令窗口的輸入僅需要是「inputname」:0代替{「inputname」: 0}

當我嘗試只是把三根弦{輸入}在一起,我得到

error: incompatible types when assigning to type ‘char[200]’ from type ‘char *’

只要我添加第二個護腕。

那我該怎麼做呢?

+1

你如何「拼湊」這些字符串? C沒有像'+',''''或'〜'這樣的字符串運算符來連接。根據你想要做什麼,你可能希望沿着'snprintf(buf,sizeof(buf),「{%s}」,input)'的方向行事。 –

+1

所以請展示你如何把你的子串放在一起。 – flowit

+0

對不起:把它們放在一起經由 '炭inbraces [200]' '炭outbraces [200]' '炭inputstring [200]' '的strcpy(inbraces, 「{」);' '的strcpy(outbraces,「 }「);' 'strcat(inputstring,outbraces)' 迄今爲止它的工作完美。但是,當我添加第二個大括號,以便新字符串在兩側都有大括號時,它會產生此錯誤。 – Anphie

回答

1

注意:所有這一切都是在看完錯誤信息後猜測


錯誤是說你基本上不能分配給一個數組。例如,如果你有例如

char string[200]; 

那麼你不能做

string = "Foobar"; 

const char *open_brace = "{"; 
string = open_brace; 

如果你想設置一個數組,你必須副本它,使用strcpy

strcpy(string, "Foobar"); 

strcpy(string, open_brace); 

然後,如果您想將一些東西附加到你的字符串,你使用strcat串連另一個字符串:

const char close_brace = "}"; 
strcat(string, close_brace); 

上述附加字符串"}"在陣列string結束。

但要小心,所以你不要溢出數組並寫出界限。

+0

謝謝你的回答:我應該在我原來的問題上更加細緻。我知道字符串需要連接,問題是當我將第二個大括號連接到字符串時發生上述錯誤,以便將字符串括在大括號中。 – Anphie