【发布时间】:2015-01-06 14:30:42
【问题描述】:
我想用函数原型从 txt 文件中获取行
int getLine(FILE* ptr,char* buffer);
但是我有一个堆栈问题...
int getLine(FILE* ptr,char* buffer){
int c;
while ( c = getc(ptr) != EOF && c != '\n'){
*buffer++ = c;
}
*buffer = '\0';
return 1;
}
分段错误(核心转储)
【问题讨论】:
-
你讨厌括号吗? :)
while ( c = getc(ptr) != EOF && c != '\n')->while (((c = getc(ptr)) != EOF) && (c != '\n'))。你怎么知道buffer适合角色? -
我认为没有必要在每个表达式周围加上括号。然而,有必要将它们写在
getc周围,分配为(c = getc(ptr) != EOF)将0/1分配给c并返回等效的布尔值,而(c = getc(ptr)) != EOF根据从getc到c读取的内容返回true/false. -
由于运算符优先级,写
(c = getc(ptr)) != EOF比较重要。 -
我的代码有什么问题?
-
是的,看我的回答。
标签: c++ c visual-c++