2016-05-30 4 views
-1

Comment faire pour que la fonction "while" s'arrête lorsque la position i est un espace vide?While (isspace (array))

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#include <ctype.h> 

int main() 
{ 

    int i,t; 
    char array[20]; 

    t=strlen(array); 

    for (i=0;i<=t;i++) 
    { 
     if(isspace(expressio[i])){ 
      while (expressio[i+1]!=isspace(expressio[i+1])) 
       i=i+1; 
      if (isspace(expressio[i+1])) 
       { code follows here...} 

Puis-je le faire comme ça?

Je suis la programmation en C.

+2

Que voulez-vous dire par _stop_? Si vous voulez casser la boucle, utilisez 'break;' – pzaenger

+0

while (! Isspace (expressio [i + 1]))? – user3802077

+1

notez que 'break' ne vous fera que sortir de la boucle _current_. Donc, si vous appelez 'break' dans la boucle' while' ci-dessus, vous serez toujours dans la boucle 'for'. Si vous voulez sortir de toutes les boucles, vous pouvez 1) utiliser 'goto' pour sauter à une étiquette en dehors de toutes les boucles 2) faire' i> t', de sorte que la condition pour la boucle 'for' échoue maintenant , ou 3) 'return' si vous avez terminé avec la fonction à ce moment-là. – yano

Répondre

3

Non, vous ne pouvez pas le faire.

while (expressio[i+1]!=isspace(expressio[i+1])) 

n'a aucun sens. expressio[i+1] est un caractère, alors que isspace(expressio[i+1]) est 1 ou 0. Vous comparez les pommes aux oranges.

Par ailleurs,

char array[20]; 

t=strlen(array); 

n'a pas de sens non plus. Si vous écrivez une chaîne au array, alors strlen retournera la longueur de cette chaîne. Appeler strlen avant d'initialiser array est inutile (et il peut retourner n'importe quoi).