почему getline () возвращает только 1 вместо возвращаемого символа, но не читает - PullRequest
0 голосов
/ 03 декабря 2018

здесь my.I не может понять, почему этот getline () возвращает 1 вместо того, чтобы не возвращать ни одного прочитанного символа.

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

int main(int argc, char *argv[])
{

FILE *fp;
if (argc!=3)
{
    printf("improper number of input\n");
    exit(1);
}

size_t len=0;
ssize_t read;
char *line=NULL;
fp=fopen(argv[1],"r");
if (fp==NULL)
{
    printf("file is empty\n");
    exit(EXIT_FAILURE);
}



while (read=getline(&line, &len, fp)!=-1)
{
    printf("retrieved line length %zu \n",read );
    //printf("%s\n",line );
}
fclose(fp);
free(line);
}

А вот мой вывод.

retrieved line length 1 

Я использовал getline (), как упомянуто здесь http://man7.org/linux/man-pages/man3/getline.3.html

мой файл содержит следующий текст:

Официальным и де-факто национальным языком Бангладеш является бенгальский современный стандартный язык (литературный бенгальский).[6] [7] [8] [9]Он служит языком общения нации, причем 98% жителей Бангладеш свободно говорят на бенгальском (включая диалекты) в качестве первого языка. [10] [11]В Индии бенгальский является официальным языком штатов Западная Бенгалия, Трипура и долина Барак в штате Ассам.На нем также говорят в разных частях долины Брахмапутры Ассама.Это также самый распространенный язык на Андаманских и Никобарских островах в Бенгальском заливе [12], на котором говорят значительные меньшинства в других штатах, включая Джаркханд, Бихар, Мизорам, Мегхалая и Одиша.При общем количестве говорящих на 250–300 миллионов человек во всем мире [13] бенгальский язык обычно считается седьмым по распространенности родным языком в мире по численности населения

1 Ответ

0 голосов
/ 03 декабря 2018

Поскольку != связывает сильнее, чем =, вам необходимо использовать парантезы:

while((read=getline(&line, &len, fp)) != -1)

Вы в основном присваиваете результат сравнения для read, который равен 1, если он оценивается как trueи 0 в противном случае.

...