正在玩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;
}
感谢所有输入。
答案 0 :(得分:2)
C中没有bool
,除非您至少使用C99并包含<stdbool.h>
。
常用做法:当用作布尔值时,返回int
,0
求值为false,其他任何内容(通常为1
)为true。
代码:
int IsDouble(const char *str)
{
char *endPtr = 0;
strtod(str, &endPtr);
if(*endPtr != '\0' || endPtr == str)
{
return 0;
}
return 1;
}
(还有一个多余的分号......)