我目前正在使用已安装minGW的VS Code。我正在尝试使用getline(),但是无论我包括哪个库(stdlib.h,string.h等),它只会告诉我尚未定义getline。
我确定它必须像通常一样是string.h的一部分,但是我无法弄清楚。经常是我不知道的其他图书馆的一部分吗?
我在下面粘贴了一个代码段,但是该代码无关紧要,因为我只是想让getline正常工作。
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include "gameCharacters.h"
#include "colors.h"
#include "technicalDefinitions.h"
void printTitleScreen()
{
char *line = NULL;
size_t line_Buffer_Size = 'a';
int count = 0;
FILE *titleScreenFile;
titleScreenFile = fopen("ASSETS/titleScreen.dat", "r");
while (count < ARRAYMAX)
{
getline(&line, &line_Buffer_Size, *titleScreenFile);
for(int i = 0; i < strlen(line) - 1; i++)
{
if (line[i] == 'G') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), GREENBLOCKCOLOR);
else if (line[i] == 'C') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), CYANBLOCKCOLOR);
else if (line[i] == 'B') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BLUEBLOCKCOLOR);
else if (line[i] == 'P') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), PUKEBLOCKCOLOR);
else if (line[i] == 'Y') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOWBLOCKCOLOR);
printf("%c", BLOCKCHARACTER);
}
printf("\n");
}
}
就像我说的那样,编译器只是告诉我在此范围内尚未声明getline。
我是这个网站的新手,所以我不确定是否可以发布屏幕截图,但是我可以提供一些帮助。
答案 0 :(得分:1)
简单:getline
是非标准函数,不可移植。在任何标准标头中都找不到该标头,因为它不是标准函数。
(POSIX非常习惯将非标准废话塞入标准标题中。)