Je veux lire des nombres (type entier) séparés par des espaces en utilisant la fonction scanf ().
J'ai lu ce qui suit
C, lecture de plusieurs nombres à partir d'une seule ligne d'entrée (scanf?)
comment lire scanf avec des espaces
Cela ne m'aide pas beaucoup. Comment lire des nombres avec un espace comme délimiteur. Par exemple J'ai les numéros suivants comme entrée 2 5 7 4 3 8 18
maintenant je veux les stocker dans différentes variables.
Aidez-moi.
Je pense que par défaut les valeurs lues par scanf avec espace/enter. Eh bien, vous pouvez fournir un espace entre '% d' si vous imprimez des entiers. Idem pour les autres cas.
scanf("%d %d %d", &var1, &var2, &var3);
De même, si vous souhaitez lire des valeurs séparées par des virgules, utilisez:
scanf("%d,%d,%d", &var1, &var2, &var3);
Lire comme %s[^\n]
puis lisez chaque char
de la chaîne, et faites une atoi()
s'il s'agit d'une char
, sinon ignorez-la.
Cela devrait être aussi simple que d'utiliser une liste de variables de réception:
scanf("%i %i %i", &var1, &var2, &var3);
int main()
{
char string[200];
int g,a,i,G[20],A[20],met;
gets(string);
g=convert_input(G,string);
for(i=0;i<=g;i++)
printf("\n%d>>%d",i,G[i]);
return 0;
}
int convert_input(int K[],char string[200])
{
int j=0,i=0,temp=0;
while(string[i]!='\0')
{
temp=0;
while(string[i]!=' ' && string[i]!='\0')
temp=temp*10 + (string[i++]-'0') ;
if(string[i]==' ')
i++;
K[j++]=temp;
}
return j-1;
}
scanf
utilise n'importe quel espace blanc comme délimiteur, donc si vous dites simplement scanf("%d", &var)
il sautera tout espace blanc puis lira un entier (chiffres jusqu'au prochain non-chiffre) et rien de plus.
Notez que les espaces sont des espaces - espaces, tabulations, retours à la ligne ou retours chariot. Chacun de ces espaces est un espace et l'un ou plusieurs d'entre eux serviront à délimiter des entiers successifs.