2015-03-24 68 views
-2
void getAvailableLetters(char lettersGuessed[], char availableLetters[])  

是我需要创建的函数。它必须使用字符串。如何把字母从字符串? C语言

  • availableLetters是英文字母
  • lettersGuessed是由用户插入字母

  • 功能应该这样做:

可用字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ
给我的一封信: (让我们猜'米')
可用的字母:abcdefghijklnopq rstuvwxyz //所有没有字母m
给我的一封信:(让我们赫斯 'B')
可用字母:acdefghijklnopqrstuvwxyz //所有没有使用m & b

任何algorythms,建议,代码或不便你会帮我这样做会很棒。

+0

我还没有这样做,请花些时间阅读[帮助页面](http://stackoverflow.com/help),尤其是名为[“我可以问什么主题?这里?“](http://stackoverflow.com/help/on-topic)和[”我应该避免问什么类型的问题?“](http://stackoverflow.com/help/dont-ask)。另请[请阅读如何提出好问题](http://stackoverflow.com/help/how-to-ask)。您可能还想了解如何创建[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – 2015-03-24 23:17:27

+0

无论您使用哪种语言,如果lettersGuessed和availableLetters都是字符串,则必须有一个替换方法来摆脱您需要从字母表中移除的字母。 – RobertoNovelo 2015-03-24 23:25:57

+0

@RobertoNovelo你确定'C'有一个字符串替换“方法”吗?我严重怀疑这一点。 – jvitasek 2015-03-25 00:07:51

回答

0

测试这一个。函数char_replace()接收源字符串,要查找的字符以及替换字符的字符串(也可以是一个字符)。在你的情况,你通过""(空值)的字符被替换,因为你想删除它。但是这个参数可能派上用场,所以我把它加入了。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

char *char_replace(char *, char, char *); 

int main(void) { 
    char input[4096] = "abcdefghijklmnopqrstuvwxyz"; 
    char *signature = char_replace(input, 'a', ""); 
    printf("%s\n", input); 

    return 0; 
} 

char *char_replace(char *str, char find, char *replace) { 
    char *ret=str; 
    char *wk, *s; 
    // string duplication 
    wk = s = strdup(str); 

    while (*s != 0) { 
     if (*s == find){ 
      while(*replace) 
       *str++ = *replace++; 
      ++s; 
     } else 
      *str++ = *s++; 
    } 
    *str = '\0'; 
    free(wk); 
    // returning the result string 
    return ret; 
} 

这种方法是计数input阵列的字符(串)上有足够的空间分配给它4096。

+0

这一个不工作,char *签名是未使用的值,并且char *替换被声明为错误 – Bobrys 2015-03-25 05:39:31

+0

@Bobrys它正在工作(只用'gcc filename.c -o filename'编译。这是一个非常棒的解决方案,但是它应该让你走到你需要去的地方,我们不是免费的代码编写社区,你应该完成这项工作,这只是一个暗示。 – jvitasek 2015-03-25 09:05:38

-1
#include<stdio.h> 
#include<string.h> 

char availableLetters[27]={"abcdefghijklmnopqrstuvwxyz"},lettersGuessed[2]; 

void getAvailableLetters(char lettersGuessed[], char availableLetters[]) 

{ 

int i,flag=0; 

for(i=0;availableLetters[i]!='\0';i++) 

{ 

if(availableLetters[i]==lettersGuessed[0]) 

{ 

flag=1; 

for(;availableLetters[i]!='\0';i++) 

{ 

availableLetters[i]=availableLetters[i+1]; 


} 

} 

if(flag==1) 

{ 

availableLetters[i-1]='\0'; 

break; 

} 

} 

} 

input() 

{ 

printf("Gimme a letter:"); 

scanf("%c",&lettersGuessed[0]); 

fflush(stdin); //deleting extra characters 

lettersGuessed[1]='\0'; 

} 

output() 

{ 

printf("Available letters:"); 

puts(availableLetters); 

} 

main() 

{ 

output(); 

input(); 

getAvailableLetters(lettersGuessed,availableLetters); 

output(); 

input(); 

getAvailableLetters(lettersGuessed,availableLetters); 

output(); 
}