阅读,处理和从C中的文件输出数字

时间:2012-08-28 15:53:08

标签: c file input

在我执行编写代码的任务之前,我希望有人可以确认以下内容是可行的(或者至少相当简单)。

我想要读取包含9列(由单个空格分隔)和许多行的数字的文件。第二列按数字顺序排列,从最大到小。我想丢弃第二列中包含指定数字以下的所有行,然后生成一个新文件并输出符合此规则的顶行。

此外,我想添加第10列,这是在其他2列之间进行计算的结果。

这是使用数组完成的吗?

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

这在awk中是微不足道的。假设$N是一个shell变量,它包含你想从第二列得到的最小值,并且你想让第10列成为第3列和第5列的总和:

awk '$2 > '$N'{ $10 = $3 + $5 }1' input-file

这会输出所有行。将输出管道化为head以减少输出的行数,或在awk脚本中添加计数器。如果您编写C代码来执行此操作,那么您将浪费时间,除非它是帮助学习C的练习。

另一方面,它在C中非常简单。为简单起见,假设您只有2列:

int c[2];
do { 
  rc = scanf( "%d %d", c, c + 1 );
  if( c[1] > N && rc == 2 )
    printf( "%d %d %d", c[0], c[1], c[0] + c[1] );
} while( rc > 0 );

答案 1 :(得分:0)

最直接的方法可能是将文件中的每一列转换为数组,然后按照您的描述进行操作。

请注意,文件存储字符而非整数,请确保根据您希望存储的内容分配数组。

您也可以找到这个问题,讨论conversion of characters to integers有用的问题。