有人可以帮我弄清楚为什么VS Code拒绝承认getline作为函数吗?

时间:2019-05-24 06:44:10

标签: c string visual-studio-code getline

我目前正在使用已安装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。

我是这个网站的新手,所以我不确定是否可以发布屏幕截图,但是我可以提供一些帮助。

1 个答案:

答案 0 :(得分:1)

简单:getline是非标准函数,不可移植。在任何标准标头中都找不到该标头,因为它不是标准函数。

(POSIX非常习惯将非标准废话塞入标准标题中。)