gpt4 book ai didi

C 中的字符数组?

转载 作者:行者123 更新时间:2023-12-01 08:57:01 25 4
gpt4 key购买 nike

我在修改 C 中的数组时遇到一点问题。我有两个数组,c1 和 c2。

我想通过键入数组 c1 包含的单词来手动填充数组 c2。用户键入一个字母,如果在 c1 中找到了这个字母,程序就会将该字母固定在 c2 中的适当位置。如果字母不属于 c1,它什么都不做。这就像一个“猜词”游戏。这是一个草图:

c1 = MARRON

c2: ******
Type a letter: E


c2: ******
Type a letter: A


c2: *A****
Type a letter: O


c2: *A**O*
Type a letter: P


c2:*A**O*
Type a letter: M


c2: MA**O*
Type a letter: N


c2: MA**ON
Type a letter: R

c2: MARRON

You win.

我的代码并没有真正遵循上面的草图。我的问题是在正确的时间打印星号和字母。我还发现该程序将最后一个字符 '\0' 替换为星号,即使我保留了防止这种情况发生的条件。这是我的代码:

void complete( char *c2, char c1[], int letter ) {
int i = 0;
for( i = 0; i < strlen( c1 ) - 1; i++ )
if( c1[ i ] == '\0' ) {
c2[ i ] = '\0';
}
else if( letter != c1[ i ] && c2[ i ] != '*' );



else if ( letter == c1[ i ] ) {
c2[ i ] = letter;
c2[ i + 1 ] = '\0';
}
else if (letter != word[ i ] )
c2[ i ] = '*';
c2[ i + 1 ] = '\0';
}

int main(){
char c1[] = "ORANGE";
int length = strlen(c1);

char *c2 = NULL;
c2 = malloc(length * (sizeof(c1));

while( 1 ){
printf( "What is the secret word?: ");
printf( "%s\n", c2 );
printf( "Propose a letter: ");
letter = lirecaracter();//it just reads a character

char *suite = NULL;
suite = strchr(c1, letter );
if( suite != NULL ){
complete( c2, c1, letter );
}

if( strcmp( c1, c2 ) == 0 ){
printf( "\n You won, congrats\n" );
exit( 0 );
}

}

}

谢谢。

最佳答案

伪代码:

  WordGuessGame(target[1..n], buffer[1..n], input[1..m])
1. for i := 1 to n do
2. buffer[i] := '*'
3. print buffer
4. for i := 1 to m do
5. for j = 1 to n do
6. if target[j] = input[i] then
7. buffer[j] := input[i]
8. if buffer = target then
9. print "You win!"
10. return
11. else print buffer
12. print "You lose..."

关于C 中的字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6863152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com