C根据带有指针的字符串的输入来打印特定字符

时间:2019-04-02 15:16:08

标签: c string pointers

为此:

 char c[]={ '0', 0, 'o', 'a', 'i', 'e' };

 char s_format[] = { "\nBra"
   "v%c!\n" };

该程序的目标是根据输入来打印不同的代码行,可以是:

                            OUTPUT
 ./nameofmyfile             Bravo
 ./nameofmyfile mp          Bravi
 ./nameofmyfile f           Brava
 ./nameofmyfile fp          Brave

在我的主目录中,我有两个char指针:

char *q = c;      //this one is initialized at position c[0]
char *p = NULL; 

我想我只能使用* q指针来以s_format格式打印字符o,i,a或e,而无需使用switch构造。

这个for循环也许正确吗?

for (unsigned int i=2; i<sizeof(c); ++i) {
     printf("%c", *(q+i), s_format[4]);
}

或者我应该使用一系列的if吗?

if ( argc > 3 && strlen(argv[3]) ) {
    if ( *(argv[3]) == 'f' )
        i = 3;
}

if ( argc > 4 && strlen(argv[4]) ) {
    if ( *(argv[4]) == 'mp' )
        i = 4;
}

if ( argc > 1 && strlen(argv[5]) ) {
    if ( *(argv[5]) == 'fp' )
        i = 5;
}

3 个答案:

答案 0 :(得分:0)

使用此:

#include <stdio.h>
#include <math.h>

char c[]={ '0', 0, 'o', 'a', 'i', 'e' };

const char * s_begin = "Brav";
const char * s_end ="!\n";

int main()
{
    int i = 3;
    printf("%s%c%s",  s_begin,c[i],s_end); //prints brava
    return 0;
}

如果您接受我的主张,则可以通过单击上方的箭头来对其进行投票,也可以通过按V键来接受答案。

答案 1 :(得分:0)

我想也许你想要类似的东西

int *q = c;
if (argc == 2) {
    if (argv[1][0] == 'f') {
        if (argv[1][1] == 'p') { //assume argv[1][2] == 0
            q += 5;
        } else {
            q += 3; //assume argv[1][1] == 0
        }
    } else { //assume argv[1][0] == 'm'; argv[1][1] == 'p'; argv[1][2] = 0
        q += 4;
    }
} else { //assume argc == 1
    q += 2;
}
printf(s_format, *q);

答案 2 :(得分:0)

在这里发布我对其他人的回答

qr-code