如何让用户编辑已有的字符串(c语言)

aaa6263 2012-11-22 12:39:27
(c语言)使用gets可以让用户输入字符串,然后存入变量中,但现在需要实现的功能如下,当用户第一次输入一个字符串如:“我是nancy,今年17岁。”字符串被付给一个变量,但下次操作时,我想要修改这个字符串,所以先要在屏幕上显示上边的字符串,然后我可以对这个字符串进行编辑,如同在文本编辑器中一样,可以删除或改写其中一两个字符,如改成:“我是nancy,今年18岁哦。”
最好可以实现上面的功能,如果不行,起码先显示已有的字符串,光标定在尾部,然后我可以从后往前删除,如原来是:“我是nancy,今年17岁。”,我可以删掉最后一个标点符号,变成:“我是nancy,今年17岁”,再删一个就变成:“我是nancy,今年17”,然后我还可以再加其他文字,如:“我是nancy,今年17哦”,最后将字符串保存到变量中,请教如何能达成这样的效果,谢谢了。
现在只会使用gets然后从头输入,无法使用已有的字符串。请指教。
...全文
173 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaa6263 2012-11-22
  • 打赏
  • 举报
回复
有没有可行的例子呢?
baichi4141 2012-11-22
  • 打赏
  • 举报
回复
楼主想要的那种文本编辑器的原理是“读取用户的每个键盘操作,在内存中修改字符串,再将字符串输出到屏幕上” 读取键盘用getch(),然后每读取一次按键就修改并重新输出字符串,光标也要自己绘制(或者看你使用的是什么编译器,都有哪些dos界面操作函数,也许不需要自己绘制光标) 记住,屏幕就是输出用的,它上面没有任何你能获取的东西,那都是像素,是红绿蓝三色分量,你能操作的就只有内存,你能做的就只有把内存输出到屏幕,不存在“屏幕上的字符串”这种东西 标准输入输出替你做了很多东西,如果你想实现自己想要的输入输出方式,就自己去做那些东西
转角天边 2012-11-22
  • 打赏
  • 举报
回复
输出屏幕上的内容没法修改的,你可以修改程序里面的变量,再重新输出
赵4老师 2012-11-22
  • 打赏
  • 举报
回复
仅供参考
#include <conio.h>
#include <stdio.h>
char pw[40];
int i,ch;
FILE *f;
void main() {
    cprintf("\r\nPassword:");
    i=0;pw[i]=0;
    while (1) {
        ch=getch();
        if (ch==13 || i>=39) break;
        switch (ch) {
        case 27:
            cprintf("\rPassword: %40s"," ");
            cprintf("\rPassword: ");
            i=0;pw[i]=0;
            break;
        case 8:
            if (i>0) {
                i--;
                pw[i]=0;
                cprintf("\b \b");
            }
            break;
        default:
            pw[i]=ch;
            i++;
            pw[i]=0;
            cprintf("*");
            break;
        }
    }
    cprintf("\r\n");
    f=fopen("password.txt","w");
    fprintf(f,"%s\n",pw);
    fclose(f);
}
hondely 2012-11-22
  • 打赏
  • 举报
回复
这个问题 你输出的时候就已经 标准输出到屏幕上去了 我们 应该只能修改 缓冲区的吧 然后重新打印 或者 你要删除尾部的话 可以用队列 删除队尾 然后再修改吧

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧