在C中打印并使用数组元素

时间:2014-04-14 14:37:11

标签: c arrays element

所以我要做的是输入一个数组,然后使用它的元素。例如:

#include <stdio.h>
#include <string.h>

 int main()
{
int s[100],i;

for(i=0; i < strlen(s); ++i)
{scanf("%d",&s[i]);}

printf("s[1] = %d",s[1];

}

如果我输入12345,我希望它返回s [1],这将是2.我知道如何打印整个数组,但我只想要一个或多个元素,似乎我无法想象这个看似简单的问题。

4 个答案:

答案 0 :(得分:0)

试试这个

char s[100],i;
scanf("%s",s);
for(i=0; i < strlen(s); ++i)
{
     printf("s[%d] = %c", i, s[i]);
}

答案 1 :(得分:0)

如果你只想要一个输入字符串,那么你可以试试这个:

char s[100];

fgets(s, sizeof(s), stdin);

并输出如下内容:

for (i = 0; s[i]; i++) {
    printf("%c\n", s[i];
}

答案 2 :(得分:0)

最有可能的是,这就是你想要的:

  • 使用fgets()
  • 逐个字符地阅读用户输入
  • 检查输入。如果它是一个新行字符(用户按下回车键),那么你就完成了循环。
  • 否则,将字符存储在数组中并保持循环。
  • 在字符串的末尾添加空终止字符\0
  • 打印字符串。

提示:当事先不知道迭代次数时,例如在这种情况下,应该使用whiledo-while循环。只有在已知迭代次数时才应使用for循环。

答案 3 :(得分:0)

for(i=0; i < strlen(s); ++i)

使用未初始化(不确定)变量可能会产生令人惊讶的结果。无论如何,你想在这里计算元素:sizeof s/sizeof *s

{scanf("%d",&s[i]);}

始终测试scanf中分配的元素数量。这是你中止btw的第二个条件 此外,如果您只想转换一个数字,请使用字段长度:"%1d"

  

如果我输入12345,我希望它返回s [1],这将是2.我知道如何打印整个数组,但我只想要一个或多个元素,似乎我无法想象这个看似简单的问题。

看起来您想要读取数字字符串,而不是数字。使用此:

char digits[100];
if(scanf("%99[0-9]", digits) != 1)
    abort();

上面可以读取最多99位的字符串,如果没有找到数字就会中止。