`我试图在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();
}
答案 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>