2017-03-08 47 views
-1

我是Linux和C編程的新手。我一直在努力學習命令行編碼(使用nano編輯器)並試圖弄清楚如何製作一個需要一個或多個命令行參數並打印出首字母縮寫詞的程序。C根據用戶輸入打印縮寫詞

我迄今爲止嘗試:

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    int i = 0; 
    for(i = 0; i < argc; i++) 
    { 
    while(argv[i]!='\0') 
    { 
     if(argv[i] = ' ') 
     { 
     i++; 
     printf("%c,argv[i+i]); 
     } 
    } 
    } 
    return 0; 
} 
+3

什麼是'int == 0; for(i == 0; i

+0

在'ctype.h'中使用'isupper'。例如:'if(isupper(argv [i] [0])...' –

+0

也'printf(「%c,argv [i + i]);' - 'argv [i + 1]'指一個char []不是一個單獨的字符 – UnholySheep

回答

0

argv[i]本身已經是一個字符串。你應該只檢查它的第一個字符並重復i

#include <stdio.h> 
#include <ctype.h> 

int main(int argc, char *argv[]) 
{ 
    for(int i = 1; i < argc; i++) 
    { 
     if(isupper(argv[i][0])) 
      printf("%c", argv[i][0]); 
    } 
    return 0; 
} 
+0

@WeatherVane'mycommand「」'。 – xuhdev

+0

刪除的「mybad」 –

+0

但是...問題說小寫字母應該被忽略,所以我期望看到'isupper'。 –

0

你有一些錯誤與

int == 0;      // syntax error 
for(i == 0; i < argc; i++)  // i is not set by a comparison 

和代碼並沒有真正做到這一點,無論如何,請試試這個:

#include <stdio.h> 
#include <ctype.h> 

int main(int argc, char *argv[]) 
{ 
    char acronym[argc]; 
    int index = 0; 
    for(int i = 1; i < argc; i++) { 
     if(isupper(argv[i][0])) { 
      acronym[index] = argv[i][0]; 
      index++; 
     } 
    } 
    acronym[index] = '\0'; 
    printf("The acronym is %s\n", acronym); 
    return 0; 
} 

程序會話:

 
test Three Letter better Acronym 
The acronym is TLA