【发布时间】:2017-09-17 23:47:04
【问题描述】:
我无法在 C 中使用 getline。我想读取每一行并将其存储到一个数组中。所以我能够读取每一行,打印出每一行并打印每行中的字符数。
我在运行我的程序时遇到了问题 它不会打印出行数和文件,它不会停止它只是在打印文件的所有行之后保持原样。
我也不知道如何将行存储到数组中。任何帮助/提示将不胜感激!!!
int main(int argc, char *argv[])
{
int line_count=0;
int charac_count;
int count=0;
char line[81];
char *lineptr;
lineptr=(char*)malloc(sizeof(char)*81);
int lineptr_size=81;
if(!lineptr)
{
printf("malloc memory error\n");
exit(EXIT_FAILURE);
}
if(argc !=3)
{
printf("Number of parameters is incorrect.\n");
exit(EXIT_FAILURE);
}
FILE *r;
r=fopen(argv[1], "r");
if(r==NULL)
{
printf("File cant be open\n");
exit(EXIT_FAILURE);
}
charac_count=getline(&lineptr, &lineptr_size, r);
while(charac_counter!=EOF)
{
if(charac_count!=-1)
{
puts(lineptr);
printf("%i\n", charac_count);
}
line_count++;
break;
}
printf("%i\n", count);
fclose(r);
free(lineptr);
return 0;
}
【问题讨论】:
-
1)
while(r){...}:这是一个无限循环。 -
r 永远不会是'null',它是文件指针
-
@Les 这是不正确的。如果文件无法打开,
fopen返回 null。 -
@Gene - 抱歉,我正在跟进 BLUEPIXY 和无限循环语句。即,我的意思是,在循环中,
r永远不能为空。它已经过测试。并且 OP 只是更改了代码,所以它现在是一个静音点。 -
@rihannon - 尝试在调试器中运行您的代码,如果您不知道如何工作,那将是您接下来学习的好东西。