簡而言之,這個程式背后的目的是遍歷給定的字串陣列并在將任何逗號 (,) 更改為冒號 (:) 后按原樣列印出來。
int main(int argc, string argv[])
{
int i;
int j;
int n;
int x;
int count = 0;
for ( i = 1, n = argc -1; i <= n; i )
{
for ( j = 0, x = strlen(argv[i]); j < x; j )
{
if(strcmp(&argv[i][j], ",") == 0)
{
//count ;
printf(":");
}
else {printf("%c", argv[i][j]);}
}
}
printf("\n");
//printf("Count = %i & i = %i & j= %i\n", count, i, j);
//printf("x= %i\n",x);
}
這是我運行代碼后得到的結果:
$ ./conversion 12, 1,2 ,12
12:1,2,12
我期望的是得到這個:
$ ./conversion 12, 1,2 ,12
12:1:2:12
結論:我相信由于某種原因,逗號在字串的開頭/中間無法識別,但如果它位于文本的末尾,它就可以作業。我希望你能告訴我如何獲得預期的結果。
提前致謝!
uj5u.com熱心網友回復:
運算式&argv[i][j]是從第 j 個字符開始的第 i 個字串。當您將它與逗號字串進行比較時,","它只會在逗號位于字串末尾時匹配。在您的示例中,逗號位于 中"12,",但不在"1,2"or中",12"。
列印字符時,使用argv[i][j]不帶的運算式&,即第 i 個字串的第 j 個字符。當您檢查逗號時也使用它:
if (argv[i][j] == ',') // comma found!
當然,您必須在此處檢查單引號中的字符文字。strcmp對于比較以 null 結尾的字串很有用。可以將單個字符與普通比較運算子進行比較。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/462791.html
