2017-01-12 1 views
-1

J'ai une structure qui avérification int est pas alpha

int Hour 
int Min 
int Sec 

Je chaîne la lecture du fichier. Le fichier a un texte comme: 23:21:30 12:32:54

Je divise la ligne entière en plusieurs fois, puis je fais la deuxième division en structure. Je fais

structure[x].Hour = atoi(token); 

alors je dois vérifier si la structure [x] .Hour n'est pas alpha.

if(isalpha(structure[x].Hour)){//DO Something} 

ne fonctionne pas. Des idées?

+0

check 'token' .. – BLUEPIXY

+4

Le champ' hour' est déjà un nombre entier. Aucun caractère alphabétique n'est possible dans un nombre entier. Vous devez vérifier votre jeton pour le caractère alpha avant d'appeler atoi. – Gerhardh

Répondre

1

Vous ne demandez pas vraiment une question ou nous dire quel est le problème que vous avez, mais je vais vous aider de toute façon ...

Ce que vous faites est dans le mauvais ordre. Si vous appelez atoi avec des chaînes non numériques, il renverra 0. Vous vérifiez ensuite si l'entier 0 n'est pas une lettre, ce qui n'est bien sûr pas le cas. Vous devez le faire dans l'ordre inverse: vérifiez d'abord que vous n'avez pas de chaîne non numérique (ce que vous devez faire en boucle); Et puis le convertir en un nombre entier.

Cela peut effectivement être fait dans un seul appel de fonction de bibliothèque standard, mais pas à aoti qui ne possède pas ce support, mais avec la fonction strtol.

La fonction strtol intègre une fonction de vérification des erreurs et un support pour vous aider à déterminer si la chaîne entière a été convertie ou non.