c99将数字读入向量,直到检测到ENTER

时间:2017-11-10 15:03:57

标签: c99

我一直在尝试编写一个可以读取一系列数字的函数,并将它们保存在向量中,直到按下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;   }

1 个答案:

答案 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;
}