Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
商店及;用C语言在数组中显示用户输入_C_Arrays - Fatal编程技术网

商店及;用C语言在数组中显示用户输入

商店及;用C语言在数组中显示用户输入,c,arrays,C,Arrays,我试图显示和打印来自用户的单词,并将其存储到我的数组中,该数组名为 char word[20] 但是我有麻烦了。我知道我们使用“for循环”将其扫描到数组中,但我一直在循环,我相信问题在于I

我试图显示和打印来自用户的单词,并将其存储到我的数组中,该数组名为

char word[20]
但是我有麻烦了。我知道我们使用“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;
}
char-getWord(char-word[]);
int main()
{   
字符字[20];
getWord(word);
返回0;
}
char-getWord(char-word[])
{ 
int i;
printf(“输入一个单词:”);
对于(i=0;i<20;i++)
{ 
scanf(“%c”和单词[i]);
}
返回词;
}
您只需要

#include <stdio.h>

int main() {
    char word[20];
    scanf("%s", word);    // Read and store
    printf("%s\n", word);    // Print
    return 0;
}
#包括
int main(){
字符字[20];
scanf(“%s”,word);//读取并存储
printf(“%s\n”,word);//打印
返回0;
}
您只需要

#include <stdio.h>

int main() {
    char word[20];
    scanf("%s", word);    // Read and store
    printf("%s\n", word);    // Print
    return 0;
}
#包括
int main(){
字符字[20];
scanf(“%s”,word);//读取并存储
printf(“%s\n”,word);//打印
返回0;
}

如果要通过字符读取,则应将结束字符设置为空字符,使其成为字符串

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

    printf("%s\n", word);
    return 0;
}

char getWord(char word[]) 
{
    int i;
    char c;
    printf("Enter a word: ");
    for (i = 0; i < 19; i++)
    {
        scanf("%c", &c);
        if ( c == '\n' )
            break;
        word[i]=c;
    }

    word[i]='\0';
    return word;
}
char-getWord(char-word[]);
int main()
{
字符字[20]
getWord(word);
printf(“%s\n”,word);
返回0;
}
char-getWord(char-word[])
{
int i;
字符c;
printf(“输入一个单词:”);
对于(i=0;i<19;i++)
{
scanf(“%c”、&c);
如果(c=='\n')
打破
字[i]=c;
}
字[i]='\0';
返回词;
}

如果要通过字符读取,则应将结束字符设置为空字符,使其成为字符串

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

    printf("%s\n", word);
    return 0;
}

char getWord(char word[]) 
{
    int i;
    char c;
    printf("Enter a word: ");
    for (i = 0; i < 19; i++)
    {
        scanf("%c", &c);
        if ( c == '\n' )
            break;
        word[i]=c;
    }

    word[i]='\0';
    return word;
}
char-getWord(char-word[]);
int main()
{
字符字[20]
getWord(word);
printf(“%s\n”,word);
返回0;
}
char-getWord(char-word[])
{
int i;
字符c;
printf(“输入一个单词:”);
对于(i=0;i<19;i++)
{
scanf(“%c”、&c);
如果(c=='\n')
打破
字[i]=c;
}
字[i]='\0';
返回词;
}

您可以使用fgets和put来读写字符串

#include<stdio.h>
#define MAX 20

int main()
{
    int ar[MAX], i, count;
    fgets(ar, MAX, stdin);  //it will accept whitespaces as well
    puts(ar);            //displaying entered string
    return;
}
#包括
#定义最大值20
int main()
{
int ar[MAX],i,计数;
fgets(ar、MAX、stdin);//它也接受空格
puts(ar);//显示输入的字符串
返回;
}

您可以使用fgets和put来读写字符串

#include<stdio.h>
#define MAX 20

int main()
{
    int ar[MAX], i, count;
    fgets(ar, MAX, stdin);  //it will accept whitespaces as well
    puts(ar);            //displaying entered string
    return;
}
#包括
#定义最大值20
int main()
{
int ar[MAX],i,计数;
fgets(ar、MAX、stdin);//它也接受空格
puts(ar);//显示输入的字符串
返回;
}

这是另一种方法而不是使用for循环吗?带%s的scanf将字符串(不带任何空格或新行)扫描到char数组。所以您不需要使用for循环扫描每个字符。是的,这是代替for循环的完美方式。但是等等,还有更多。你还得到了一个缓冲区溢出,绝对免费!实际上,您希望使用
scanf(“%20s”,word)
防止缓冲区溢出。您应该始终验证
scanf
的返回,例如
if(scanf(“%19s”,word)!=1){/*handle error*/}
。否则您就不能信任
printf(“%s\n”,word)不会调用未定义的行为。(@wallyk--它是
%19s”
而不是
%20s”
--可以超出数组边界
1
)这是另一种方法而不是使用for循环吗?带%s的scanf将字符串(没有任何空格或新行)扫描到字符数组。所以您不需要使用for循环扫描每个字符。是的,这是代替for循环的完美方式。但是等等,还有更多。你还得到了一个缓冲区溢出,绝对免费!实际上,您希望使用
scanf(“%20s”,word)
防止缓冲区溢出。您应该始终验证
scanf
的返回,例如
if(scanf(“%19s”,word)!=1){/*handle error*/}
。否则您就不能信任
printf(“%s\n”,word)不会调用未定义的行为。(@wallyk——它是
%19s”
而不是
%20s”
——可以超出数组边界
1