【发布时间】:2014-04-26 17:35:08
【问题描述】:
我正在尝试编写一个函数来删除 C 中的一行的其余部分。我正在传递一个 char 数组和一个文件指针(从中读取 char 数组)。该数组应该只包含 80 个字符,如果数组中没有换行符,则读取(并丢弃)文件中的字符,直到到达它(换行符)。这是我到目前为止所拥有的,但它似乎没有工作,我不确定我做错了什么。任何帮助将不胜感激!以下是有关该函数应该做什么的给定信息:
discardRest - 如果 fget 没有读取换行符,则没有读取整行。此函数将最近读取的行和指向正在读取的文件的指针作为输入。 discardRest 在输入行中查找换行符。如果换行符不在行中,则函数从文件中读取(并丢弃)字符,直到读取换行符为止。这将导致文件指针定位到输入文件中下一行的开头。
这是代码:
void discardRest(char line[], FILE* file)
{
bool newlineFound = FALSE;
int i;
for(i = 0; i < sizeof(line); i++)
{
if(line[i] == '\n') newlineFound = TRUE;
}
if(!newlineFound)
{
int c = getc(file);
while(c != '\n')
{
c = getc(file);
}
}
}
【问题讨论】:
-
乍一看:
sizeof(line)可能不会像您认为的那样做,因为数组衰减为指针。 -
你是如何阅读你的台词的?
fgets? -
是的,我最初使用 fgets 来读取该行。
-
@user3477950 在 Clang 中所说的“警告:数组函数参数上的 sizeof 将返回 'char *' 的大小而不是 'char []'”
标签: c