Linux C,任意位置删除一个字符并将该字符后面的所有内容整体向前移动一个字符,打印删除的字符和删除文件的位置,示例代码
时间: 2024-02-20 20:56:19 浏览: 62
下面是一个示例程序,它实现了从文件中删除任意一个字符并将该字符后面的所有内容整体向前移动一个字符,然后打印删除的字符和删除的位置:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
char filename[100], c;
int pos = 0, size = 0, i = 0;
char *buffer;
printf("Enter the filename: ");
scanf("%s", filename);
fp = fopen(filename, "r+");
if (fp == NULL) {
printf("Error: cannot open file.\n");
exit(1);
}
printf("Enter the position of the character you want to delete: ");
scanf("%d", &pos);
fseek(fp, 0, SEEK_END);
size = ftell(fp);
buffer = (char*) malloc(size);
fseek(fp, 0, SEEK_SET);
fread(buffer, size, 1, fp);
c = buffer[pos-1];
printf("Deleting character '%c' at position %d.\n", c, pos);
for (i = pos; i < size-1; i++) {
buffer[i-1] = buffer[i];
}
buffer[size-1] = '\0';
fseek(fp, 0, SEEK_SET);
fwrite(buffer, size-1, 1, fp);
free(buffer);
fclose(fp);
return 0;
}
```
该程序会让用户输入要操作的文件名和要删除的字符的位置。然后,它会打开文件,读取整个文件内容到一个缓冲区中,删除指定位置的字符,并将其后面的所有字符整体向前移动一个字符。最后,程序将修改后的内容写回到文件中,并关闭文件并退出。
请注意,该程序可以删除任意位置的字符,并将其后面的所有字符向前移动一个字符。如果您需要删除多个字符或者更改替换字符,请修改程序以满足您的需求。
阅读全文