修改此程序段,要求在输入插入内容结尾时输入的换行符不被插入: // 获取用户输入的插入位置 printf("\n\t请输入插入的位置(从0开始):\n\t"); scanf("%ld", &pos); getchar(); // 读取换行符 // 获取用户输入的插入内容并计算长度 printf("\t请输入要插入的内容:\n\t"); char input[MAX_LEN]; fgets(input, MAX_LEN, stdin); int input_len = strlen(input)-2 ; // 减去换行符的长度 // 如果输入内容长度超过了文件长度,则提示插入位置错误 if (pos + input_len > len) { printf("\t插入位置错误!\n"); exit(0); } // 依次将后面的字符往后移动input_len个字符 for (int i = len; i >= pos + 1; i--) { fseek(fp, i - 1, SEEK_SET); ch = fgetc(fp); fseek(fp, i + input_len - 1, SEEK_SET); fputc(ch, fp); } // 将输入内容插入到文件中 fseek(fp, pos, SEEK_SET); fputs(input, fp); printf("\t编辑后内容:\n"); rewind(fp); while ((ch = fgetc(fp)) != EOF) { putchar(ch); }
时间: 2024-03-26 22:36:34 浏览: 57
以下是修改后的程序段:
// 获取用户输入的插入位置
printf("\n\t请输入插入的位置(从0开始):\n\t");
scanf("%ld", &pos);
getchar(); // 读取换行符
// 获取用户输入的插入内容并计算长度
printf("\t请输入要插入的内容:\n\t");
char input[MAX_LEN];
fgets(input, MAX_LEN, stdin);
int input_len = strlen(input);
if (input[input_len - 1] == '\n') {
input_len -= 1; // 减去换行符的长度
}
// 如果输入内容长度超过了文件长度,则提示插入位置错误
if (pos + input_len > len) {
printf("\t插入位置错误!\n");
exit(0);
}
// 依次将后面的字符往后移动input_len个字符
for (int i = len; i >= pos + 1; i--) {
fseek(fp, i - 1, SEEK_SET);
ch = fgetc(fp);
fseek(fp, i + input_len - 1, SEEK_SET);
fputc(ch, fp);
}
// 将输入内容插入到文件中
fseek(fp, pos, SEEK_SET);
fputs(input, fp);
printf("\t编辑后内容:\n");
rewind(fp);
while ((ch = fgetc(fp)) != EOF) {
putchar(ch);
}
在获取用户输入的插入内容时,先使用fgets()函数读取整行输入,然后判断输入内容的最后一个字符是否为换行符,如果是则将输入长度减1。这样可以避免插入内容结尾出现多余的换行符。
阅读全文