C printf(“s缓冲区[k]”,缓冲区[k],k);仅打印>;缓冲区不是%s

C printf(“s缓冲区[k]”,缓冲区[k],k);仅打印>;缓冲区不是%s,c,C,我正在做一个益智游戏,所以我想在用户找到那个单词时写出大写字母。所以我写了这个循环,但它不起作用。程序未进入IF语句。我试图打印printf(“%s Buffer[k]”,Buffer[k],k)在第二个中,为了(i)找到问题,但我没有看到单词,程序只打印了“Buffer[0]\n Buffer[1]\n……….Buffer[9]” 但是当我打印这些printf时(“%s Buffer[k]”,Buffer[k],k)在第一个循环中正确打印。我如何解决这个问题? 我的第二个问题是: 为什么不进入

我正在做一个益智游戏,所以我想在用户找到那个单词时写出大写字母。所以我写了这个循环,但它不起作用。程序未进入IF语句。我试图打印
printf(“%s Buffer[k]”,Buffer[k],k)在第二个中,为了(i)找到问题,但我没有看到单词,程序只打印了“Buffer[0]\n Buffer[1]\n……….Buffer[9]”
但是当我打印这些
printf时(“%s Buffer[k]”,Buffer[k],k)在第一个循环中正确打印。我如何解决这个问题?
我的第二个问题是:
为什么不进入IF语句

代码1:

for(int k=0; k<MAX_WORD_NUMBER; k++){
            for(int i=0; i<MAX_WORD_LENGTH; i++){
                printf("%s Buffer[k]",buffer[k],k);
                if(strcmp(buffer[k],word) == 0){                    
                    buffer[k][i] = word[i] - 32;
                }
                else{
                    break;
                }
            }
        }       
代码2:

for(int k=0; k<MAX_WORD_NUMBER; k++){
     printf("%s Buffer[k]",buffer[k],k);
        for(int i=0; i<MAX_WORD_LENGTH; i++){
            if(strcmp(buffer[k],word) == 0){                    
                buffer[k][i] = word[i] - 32;
            }
            else{
                break;
            }
        }
    }       
[已解决]

我已将MAX_WORD_LENGTH改为strlen(WORD)和strncmp,而不是strcmp

您在文章中描述的打印语句中有错误(顺便说一句,请将其添加到您的代码中,以便我们能够准确了解您的尝试。)。打印的正确用法是:
printf(“%s缓冲区[%d]”,缓冲区[k],k)
我已经更改@HayfaYou编写的输出行类似于
缓冲区[0]
。你的意思可能是“缓冲区[0]
,不是吗?(注意前导空格)。这可能意味着
buffer[k]`是一个空字符串(或仅以0开头)。您通过接受答案表示您的问题已找到解决方案。您可以回答自己的问题,因此,不要编辑问题说“已解决”,而是发布您自己的答案,然后在系统允许时接受它。
for(int k=0; k<MAX_WORD_NUMBER; k++){
     printf("%s Buffer[k]",buffer[k],k);
        for(int i=0; i<MAX_WORD_LENGTH; i++){
            if(strcmp(buffer[k],word) == 0){                    
                buffer[k][i] = word[i] - 32;
            }
            else{
                break;
            }
        }
    }       
wall Buffer[0]
evasive Buffer[1]
. 
.
.
war Buffer[9]