我不能在Clion中使用getline

时间:2018-05-17 14:55:36

标签: c

`我试图在Clion IDE中使用getline,但我不能。 我用C语言 这是代码。

   webMapValues.geoTrackActive.on("tracking", function (e) {
                $("#accuraty").width((e.geolocation.getAccuracy()));
                webMapValues.geoGauge.val(e.geolocation.getAccuracy());
                $("#heading").val(e.geolocation.getHeading());
                $("#z").val(e.geolocation.getAltitude());


                    // set sketch
                    webMapValues.sketch = e.target.sketch_;

                    /** @type {ol.Coordinate|undefined} */
                var tooltipCoord = e.geolocation.getPosition();

                var feature = e.feature;
                var geom = e.feature.getGeometry();
                        var output;
                if (geom instanceof ol.geom.Polygon) {
                            webMapValues.polyAcres = MapService.formatArea(geom);
                            tooltipCoord = geom.getInteriorPoint().getCoordinates();
                            webMapValues.measureTooltipElement.innerHTML = webMapValues.polyAcres;
                            webMapValues.measureTooltip.setPosition(tooltipCoord);                                
                        } else if (geom instanceof ol.geom.LineString) {
                            webMapValues.rulerLength = MapService.formatLength(geom);
                            tooltipCoord = geom.getLastCoordinate();
                            //**************** Moved inside 'else' for LineString **********
                            webMapValues.measureTooltipElement.innerHTML = webMapValues.rulerLength;
                            webMapValues.measureTooltip.setPosition(tooltipCoord);
                        } 
            },this);

并告诉我这个错误

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

    void ler_ficheiro(){
    // variaveis par ler o ficheiro
    FILE*   ficheiro;
    char*    linha;;
    size_t  len = 0;
    ssize_t read;

    // variaveis para contar as linhas
    int n_linha;

    ficheiro = fopen( "input.txt", "r");
    n_linha = 0;

    if( !ficheiro ){
        perror("ERROR");
        exit(0);
    }
    else{
        while( getline(&linha, &len, ficheiro ) != -1 ){
            char sub_linha[1000];
            strcpy(sub_linha, linha);
            colocar_buffer(sub_linha, n_linha);
            n_linha++;
        }
    }
    fclose(ficheiro);
}

    int main(){
    ler_ficheiro();
}

2 个答案:

答案 0 :(得分:2)

你在Windows上。 getline是一个POSIX函数,C标准不需要,编译器使用的C运行时(MinGW)不实现它。我很惊讶它出现在你的stdio.h;你应该至少得到一个“隐式函数声明”警告以及链接器错误。

我建议使用fgets代替它,它可能足以满足你的目的。

答案 1 :(得分:0)

我怀疑问题是您没有使用getline()函数的正确编译环境。

这可以解释您所看到的getline()的“未定义参考”错误。

getline()函数是标准库的GNU扩展。

请参阅提及的getline(3) Linux Programmer's Manual

       Since glibc 2.10:
           _POSIX_C_SOURCE >= 200809L
       Before glibc 2.10:
           _GNU_SOURCE
     

getline()和getdelim()最初都是GNU扩展。他们          在POSIX.1-2008中标准化。

,提供的示例使用:

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