我有一个文本文件"input",其中一些行包含字符"$"。我想将此文件复制到一个新的文本文件" output "中,但要截断"$"字符(如果存在)之后(包括)的所有行。
我尝试了以下方法:
while (fgets(line, LINE_LENGTH, input) != NULL)
{
strcpy(tmp_line, line);
cmt_ptr = strchr(tmp_line, '$');
if (cmt_ptr != NULL)
{
*cmt_ptr = '\n';
}
fputs(tmp_line, output);
}
这将编译,但每行中"$"之后的所有文本都将复制到新行中。
然后我试了这个:
while (fgets(line, LINE_LENGTH, input) != NULL)
{
strcpy(tmp_line, line);
cmt_ptr = strchr(tmp_line, '$');
if (cmt_ptr != NULL)
{
strtok(tmp_line, '$');
}
fputs(tmp_line, output);
}
但是我收到一条错误消息,说"读取位置时发生访问冲突"。
谁能告诉我怎么更正密码?
2条答案
按热度按时间3htmauhk1#
下面的代码是不够的,因为只有
$
被替换为'\n'
。要缩短字符串,请设置一个 *null字符 *。@一些程序员替代方法:找到
$
时使用不同的打印方式。不需要tmp_line
。wh6knrhe2#
使用
fgets
会使问题过于复杂,因为不需要读取整行。一次只读取一个字符。例如: