ورود

View Full Version : خطای getline was not declared in this scope



karbarshj
یک شنبه 04 تیر 1396, 16:38 عصر
سلام میخواستم خط به خط از دو فایل رو بخونم و این دو خط رو باهم مقایسه کنم ولی وقتی از کامپایلر GCC استفاده میکنم خطای getline was not declared in this scope رو میده البته نمیدونم کدی که نوشتم درسته یا نه.
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE *fp1,*fp2;
char *line = NULL;
size_t len = 0;
char arr1[60];
char arr2[60];
fp1=fopen("fname1.txt", "r");
fp2=fopen("fname2.txt", "r");
while(!feof(fp1)& !feof(fp2))
{ arr1=getline(&line,&len,fp1);
printf("%s",arr1);
arr2=getline(&line,&len,fp2);
printf("%s",arr2);
if(arr1!=arr2)
printf("not Equal");
continue;
}
fclose(fp1);
fclose(fp2);
return 0;

}

تابع getline جز توابع کتابخانه ای C نیست؟
راه دیگه ای به جز این تابع وجود داره؟ البته می خوام مراجعه به فایل برای خوندن کامل یه خط باشه نه به صورت رشته ای یا کاراکتری

parvizwpf
یک شنبه 04 تیر 1396, 22:37 عصر
معمولا به اینصورت استفاده میشه :
#include <fstream>
#include <string>

int main()
{
std::ifstream file("Read.txt");
std::string str;
while (std::getline(file, str))
{
// Process str
}
}

karbarshj
دوشنبه 05 تیر 1396, 11:14 صبح
معمولا به اینصورت استفاده میشه :
#include <fstream>
#include <string>

int main()
{
std::ifstream file("Read.txt");
std::string str;
while (std::getline(file, str))
{
// Process str
}
}
این به زبان C++‎‎ هست
من زبان سی می خوام
فکر کنم باید چیزی اضافه کنم تا بتونم از این تابع استفاده کنم!!!!!

m.r226
دوشنبه 05 تیر 1396, 11:20 صبح
معمولا به اینصورت استفاده میشه :


فک کنم ایشون صرفا میخوان با C کد بزنن. حداقل کدشون که تماما این رو میگه.

-D_GNU_SOURCE رو به کامپایلر پاس بده. یه تابع افزونه ی gcc هست.
یه مشکل دیگه این میتونه باشه که GLIBC شما این تابع رو نداره. بهتره یه grep روی /usr/include/stdio.h بزنی ببینی هست یا نه.

karbarshj
دوشنبه 05 تیر 1396, 13:31 عصر
فک کنم ایشون صرفا میخوان با C کد بزنن. حداقل کدشون که تماما این رو میگه.

-D_GNU_SOURCE رو به کامپایلر پاس بده. یه تابع افزونه ی gcc هست.
یه مشکل دیگه این میتونه باشه که GLIBC شما این تابع رو نداره. بهتره یه grep روی /usr/include/stdio.h بزنی ببینی هست یا نه.

دقیقا می خوام فقط با سی کد بزنم
ممنون بابت راهنماییتون قبلا چک کردم نبود
ولی توی اینترنت خیلی دیدم از این تابع استفاده میشه ولی چه جوری نمیدونم.

mirage0411
دوشنبه 05 تیر 1396, 13:45 عصر
این تابع گویا تو کتابخونه استاندارد سی نیست . تو این لینک یه توضیحاتی داده
https://stackoverflow.com/questions/13112784/undefined-reference-to-getline-in-c

parvizwpf
سه شنبه 06 تیر 1396, 00:57 صبح
https://www.phanderson.com/files/file_read.html