所以我要做的是输入一个数组,然后使用它的元素。例如:
#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.我知道如何打印整个数组,但我只想要一个或多个元素,似乎我无法想象这个看似简单的问题。
答案 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
。提示:当事先不知道迭代次数时,例如在这种情况下,应该使用while
或do-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位的字符串,如果没有找到数字就会中止。