【问题标题】:IsDouble function prototype syntax error & warning (data definition has no type or storage class)IsDouble 函数原型语法错误和警告(数据定义没有类型或存储类)
【发布时间】:2015-07-07 16:51:09
【问题描述】:

一直在玩 c 试图解析 csv 文件。

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

#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;
}

感谢所有输入。

【问题讨论】:

    标签: c c-strings function-prototypes


    【解决方案1】:

    C 中没有 bool,除非您至少使用 C99 并包含 &lt;stdbool.h&gt;

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

    代码:

    int IsDouble(const char *str)
    {
        char *endPtr = 0;
        strtod(str, &endPtr);
    
        if(*endPtr != '\0' || endPtr == str)
        {
            return 0;
        }
        return 1;
    }
    

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

    【讨论】:

    • 我明白了,好吧,这是有道理的。感谢费利克斯的提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2014-08-18
    • 2013-09-25
    • 2013-08-12
    • 2023-01-25
    • 1970-01-01
    相关资源
    最近更新 更多