2017-03-08 49 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