我一直在尝试编写一个可以读取一系列数字的函数,并将它们保存在向量中,直到按下Enter键为止。
因此,例如,如果用户输入001342
然后输入,我希望向量v[]
为:
v[0]=0;
v[1]=0;
v[2]=1;
v[3]=3;
v[4]=4;
v[5]=2;
所以我的想法是使用这样的东西:
char v[100];
int t=0,i=0;
printf("Insert a number (max 100 digits): ");
while (t==0) {
v[i]=getchar();
i=i+1;
printf("%c",v[i]);
if (v[i]=='\n') {
t=1;
}
}
当我按下Enter并且只是继续阅读更多值时,它似乎无法识别。不仅如此,如果添加:
printf("%c",v[i]);
在“while”内部尝试查看存储到向量中的内容,这些值是完全乱码的。
有什么建议吗?
这是所有相关代码:
#include <stdio.h>
#include <stdlib.h>
int SomaAlgarismos();
int Dia_Seguinte();
int testbis();
int capicua();
int capicua2();
int main() {
int c;
printf("Escolha uma opção:\n");
printf("[1]F2 Ex13 (soma algarismos)\n");
printf("[2]F2 Ex14 (dia seguinte)\n");
printf("[3]F2 Ex12 (capicua)\n");
printf("[4]--Template--\n");
printf("[5]Sair\n");
scanf("%d",&c);
switch (c) {
case (3):
capicua2();
printf("\n");
main();
break;
// other options here
default:
printf("Opção Inválida\n");
break; } }
int capicua2() {
char v[5000];
int t=0,i=0;
printf("Introduza um número: ");
while (t==0) {
v[i]=getchar();
i=i+1;
printf("%c",v[i]);
if (v[i]=='\n') {
t=1;
}
}
return 0; }
答案 0 :(得分:0)
尝试使用fgets()一次读取整个数字串。 像这样......
int main(int argc, char** argv)
{
int i;
char v[100];
int len = sizeof v / sizeof v[0];
fgets(&v[0], len, stdin);
i = 0;
while (v[i] != 0 && v[i] != '\n') {
printf("v[%d] = %c\n", i, v[i]);
++i;
}
return 0;
}