我正在尝试检查字母对另一个字母,检查用户字[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
}
}
}
}
答案 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]
之间的字符只能算一次。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”命令(函数):
如果你想切换一个字符,你可以使用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;
}