【问题标题】:Checking if int is not alpha检查 int 是否不是 alpha
【发布时间】:2017-01-12 12:13:13
【问题描述】:

我有一个结构有

int Hour
int Min
int Sec

我正在从文件中读取字符串。文件的文本如下:23:21:30 12:32:54

我将整行拆分为单独的时间,然后进行第二次拆分为结构。 我在做

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

然后我需要检查 structure[x].Hour 是否不是 alpha。

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

不工作。有什么想法吗?

【问题讨论】:

  • 检查token..
  • 字段hour 已经是一个整数。整数中不可能有字母字符。在调用 atoi 之前,您需要检查令牌中的字母字符。

标签: c string int structure isalpha


【解决方案1】:

您并没有真正提出问题或告诉我们您遇到了什么问题,但无论如何我都会帮助您...

您正在执行的操作顺序错误。如果您使用非数字字符串调用atoi,它将返回0。然后检查整数0 是否不是字母,当然不是。您需要以相反的顺序执行此操作:首先检查您是否没有非数字字符串(您必须在循环中执行此操作); 然后将其转换为整数。

这实际上可以在单个标准库函数调用中完成,但不能对没有该支持的aoti 进行,而是使用strtol 函数。

strtol 函数内置了错误检查,并支持帮助您确定整个字符串是否已转换。

【讨论】:

    猜你喜欢
    • 2018-07-18
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2018-04-14
    相关资源
    最近更新 更多