← 返回题目列表
UNSW COMP1521 · 中等

COMP1521 2022T3 Q6 · 文件I/O

COMP1521 2022T3 Q6 · 10 marks · C 知识点: 文件I/O(FILE) · 次: 文本处理/临时文件 · 难度: 中等 Topic: File I/O · Source: https://cgi.cse.unsw.edu.au/~cs1521/26T1/resources/practice_exams.html

一句话 / Summary: 删除文件的第n行


Write a C program, 22t3final_q6.c , which takes two arguments, a filename and an integer n .

Your program should delete the n -th line from the file.

Lines are numbered starting at 1.

If the file has less than n lines, your program should do nothing.

Your program should print nothing on stdout. It should only modify the file .

For example:

printf 'Hello\nhow\nare\nyou\n' > hello.txt cat hello.txt Hello how are you ./22t3final_q6 hello.txt 3 cat hello.txt Hello how you

printf 'I\nam\nreally great thank you\n' > answer.txt cat answer.txt I am really great thank you ./22t3final_q6 answer.txt 5 cat answer.txt I am really great thank you ./22t3final_q6 answer.txt 1 cat answer.txt am really great thank you

seq 7 15 > numbers.txt cat numbers.txt 7 8 9 10 11 12 13 14 15 ./22t3final_q6 numbers.txt 5 cat numbers.txt 7 8 9 10 12 13 14 15

You may remember from the lectures, reading and writing to a single file simultaneously can cause a range of tricky issues, You may find creating a extra file (a temporary file) helpful in this exercise.

You can use make(1) to build your code:

make 22t3final_q6

Your program should not produce any output on stdout or stderr.

Assume a line is zero or more characters followed by a '\n' character.

Your program can assume it is always given as argument the name of an existing file and a positive integer.

You are permitted to create extra (temporary) files in the current directory.

You may define and call your own functions if you wish.

Your solution must be in C only.

Your solution must not be in MIPS , C++ , Python , or any other language.

Your program cannot call external programs.

Your program cannot use any of: fork() / exec() , posix_spawn() , system() , or any other similar functions.

Your program may call any functions from the C standard library available by default on CSE Linux systems.

Including but not limited to: stdio.h , stdlib.h , string.h , math.h , assert.h , etc.

No error checking is necessary or required.


🤖 Adapted: write a C program with args <file> <n>. Print the file content to stdout with line n (1-indexed) removed. If the file has fewer than n lines, print it unchanged.

Fixture files are provided in the run workspace; reference outputs verified on the sandbox.