在C中以数组的形式存储和显示用户输入

Jag*_*agr 0 c arrays

我试图显示并打印用户的一个单词并将其存储到我调用的数组中

char word[20]
Run Code Online (Sandbox Code Playgroud)

但我遇到了麻烦.我知道我们使用"for循环"将其扫描到阵列中,但我继续在圈子里进行,我相信问题在于i < 20.我对此进行了研究,发现对此的答案非常有经验,我需要一种非常基本的方法来做到这一点而不需要额外的东西.所以我想要的是从用户那里得到消息,存储它并将其打印到屏幕上.

没有经验的代码可以帮助吗

C中的代码

char getWord(char word[]);
int main()
{   
    char word[20];  
    getWord(word);

    return 0;
}

char getWord(char word[])
{ 
    int i;
    printf("Enter a word: ");
    for (i = 0; i < 20; i++) 
    { 
        scanf(" %c", &word[i]);
    }

    return word;
}
Run Code Online (Sandbox Code Playgroud)

Shr*_*han 6

你想要的只是

#include <stdio.h>

int main() {
    char word[20];
    scanf("%s", word);    // Read and store
    printf("%s\n", word);    // Print
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 但等等,还有更多.你也得到缓冲区溢出,*绝对免费*! (5认同)
  • 你应该总是***验证***scanf`的返回,例如`if(scanf("%19s",word)!= 1){/*handle error*/}`.否则你就没有信心`printf("%s \n",word);`不会调用*Undefined Behavior*.(@wallyk - 它是``%19s'`而不是`'%20s"` - 可以超过数组界限`1`) (4认同)