IsDouble函数原型语法错误&警告(数据定义没有类型或存储类)

时间:2015-07-07 16:51:10

标签: c c-strings function-prototypes

正在玩c试图解析csv文件。

现在我正在尝试实现一个函数来检查字符串是否只是一个双精度,然后我可以转换它。 但是我在.h文件中遇到“bool之前的语法错误”和“数据定义没有类型或存储类”的问题

#ifndef MSGR_H
#define MSGR_H

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

typedef struct Entry 
{
    char *str;
    int iVal;
} Entry;

int NumRows(char fileName[]);
int NumColumns(char fileName[]);
void TokenizeLine(int x; int y; char currentLineStr[], Entry eTable[x][y], int yIndex, int x, int y);
*** bool IsDouble(const char *str);*** (problem is supposedly here)
#endif

以下是功能本身。

bool IsDouble(const char *str)
{
 char *endPtr = 0;
 bool flag = true;
 strtod(str, &endPtr);

 if(*endPtr != '\0' || endPtr == str);
            flag = false;
 return flag;
}

感谢所有输入。

1 个答案:

答案 0 :(得分:2)

C中没有bool,除非您至少使用C99并包含<stdbool.h>

常用做法:当用作布尔值时,返回int0求值为false,其他任何内容(通常为1)为true。

代码:

int IsDouble(const char *str)
{
    char *endPtr = 0;
    strtod(str, &endPtr);

    if(*endPtr != '\0' || endPtr == str)
    {
        return 0;
    }
    return 1;
}

(还有一个多余的分号......)