J'ai besoin de coder une fonction qui va prendre x nombres. (x est lu dans la fonction comme un argument) Les nombres peuvent être précédés et séparés par un nombre quelconque d'espaces blancs et de nouvelles lignes, et après que le dernier nombre est entré, un caractère de nouvelle ligne termine l'analyse. J'ai pensé à utiliser des chaînes de caractères et à ne tenir compte d'aucun caractère numérique. Quand un caractère numérique est entré, il sera lu dans la chaîne, ainsi que tous les caractères numériques suivants. Quand un espace blanc ou une nouvelle ligne est entré après un nombre, je veux que le nombre dans la chaîne soit entré dans un tableau. Donc si la chaîne contient {'1', '3', '2'}, je veux placer la valeur de "132" dans la cellule dans un tableau.lire en chiffres en utilisant des chaînes
Je vais définir un compteur à compter lorsqu'un nombre est placé dans un tableau, et lorsque la quantité de nombres nécessaire est atteinte, la fonction retournera.
Voici ce que j'ai jusqu'ici:
void read_vector(int* v, int n)
{
int value, i = 0, j = 0, k;
char num, str[9];
do
{
num = getchar();
if (num > 47 && num < 58)
{
while (i < 10)
{
str[i] = num;
i++;
num = getchar();
if (i = 9 || num < 47 || num > 58)
{
str[i] = '\0'
j++;
for(k = 1; k <= strlen(str); k++)
{
value += str[k - 1] * pow(10, (strlen(str) - k));
}
v[j] = value
if(j = n)
return;
}
}
}
}
while (1);
}
Merci
Seulement des entiers positifs? –
Pour l'instant, oui. Je ne prendrai que des entiers positifs. Aussi, s'il y a une façon plus simple de le faire, je suis ouvert. – Kyle
Utilisez et isdigit() pour l'amour de la pitié. Vous devriez obtenir un zéro pour l'utilisation de 'num> 47 && num <58'! –