商店及;用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
)