Switch Case帮助C

时间:2012-09-14 18:32:10

标签: c switch-statement

我正在尝试检查字母对另一个字母,检查用户字[k]中的第一个字母与letterstest [t]中的所有字母,如果它们匹配切换匹配字母test [t]的字母为0所以它无法再次匹配。我感到困惑的地方是在switch(){以及究竟会起作用的地方。有没有案例:什么可以切换字符串的字母?

for (k = 0; k<wordsize; k++){
    for(t=0; t<8, t++){
        if (userword[k] != letterstest[t]) 
            return 0;

        if (userword[k] == letterstest[t]){    
            switch (letterstest[t]){

                    //unsure what case would work here
            }
        }
    }
}

2 个答案:

答案 0 :(得分:5)

我认为你误解了switch是什么。 switch是一个选择结构,例如if / else。例如,这两个代码片段(通常)是等效的:

if(a == 0)
    printf("%s\n", "zero");
else if(a == 1)
    printf("%s\n", "one");
else if(a == 2)
    printf("%s\n", "two");
else
    printf("%s\n", "invalid");

switch(a)
{
    case 0:
        printf("%s\n", "zero");
        break;
    case 1:
        printf("%s\n", "one");
        break;
    case 2:
        printf("%s\n", "two");
        break;
    default:
        printf("%s\n", "invalid");
}

我并不完全清楚你要做什么,但是当你写“如果他们匹配将匹配字母的字母[t]与0匹配以便它再次无法匹配”时,听起来就像你的意思这样:

    if (userword[k] == letterstest[t]){
        letterstest[t] = '\0';
    }

编辑添加: O.K.,我想想我现在明白你要做的事情:

  • 您要确认userword[0]userword[wordsize-1]之间的每个字符都显示在letterstest[0]letterstest[7]之间。
  • 如果给定字符在userword[0]userword[wordsize-1]之间多次出现,则它必须至少出现letterstest[0]letterstest[7]之间的次数。也就是说 - letterstest[0]letterstest[7]之间的字符只能算一次。
  • 你是O.K.更改letterstest[0]letterstest[7]之间出现的字符,只要最终答案是正确的;也就是说,您不需要保留letterstest
  • 的内容
  • 字符'\0'不会出现在userword[0]userword[wordsize-1]之间的任何位置,因此可以用作“虚拟”值,表示“不匹配”。

这是对的吗?

如果是,那么你可以写:

for(k = 0; k < wordsize; k++) {
    for(t = 0; t < 8; t++) {
        if(userword[k] == letterstest[t]) {
            letterstest[t] = '\0'; /* don't let letterstest[t] count again */
            break; /* O.K., we've matched userword[k], we can move on */
        }
    }
    if(t == 8) /* we reached letterstest[8] without finding a match */
        return 0;
}
return 1; /* we found a match for each character */

答案 1 :(得分:0)

好的,首先你可以使用任何函数匹配其他的字符或字符串... (如果你不想使用“for”循环)

在linux中使用“man”命令(函数):

  • 和strchr
  • 的strstr
  • 索引
  • RINDEX ...

如果你想切换一个字符,你可以使用char的ascii代码(http://www.table-ascii.com/),或直接使用char ...

如果您想检查“A”字符,请执行以下操作:

// Char Method
switch (letterstest[t]){
    case 'A':
        printf("A Detected !\n");
        break;
}

// Or Use The ASCII Code Method
switch (letterstest[t]){
    case 65:
        printf("A Detected !\n");
        break;
}

示例如果您想要检查'0'字符(数字),您可以:

// Char Method
switch (letterstest[t]){
    case '0':
        printf("0 Detected !\n");
        break;
}

// Or Use The ASCII Code Method
switch (letterstest[t]){
    case 48:
        printf("0 Detected !\n");
        break;
}

示例如果你想检查0字符('\ 0'NUL)你可以做到:

// Char Method
switch (letterstest[t]){
    case '\0':
        printf("NUL Detected !\n");
        break;
}

// Or Use The ASCII Code Method
switch (letterstest[t]){
    case 0:
        printf("NUL Detected !\n");
        break;
}