文章编辑的源程序
- 格式:doc
- 大小:32.00 KB
- 文档页数:4
vue 循环生成wangeditor富文本编译-概述说明以及解释1.引言1.1 概述Vue.js是一款流行的JavaScript框架,用于构建用户界面。
它采用了MVVM(Model-View-ViewModel)的架构模式,通过数据绑定和组件化的方式,使得开发者能够更高效地构建交互性强、响应式的Web应用程序。
Wangeditor富文本编辑器是一款基于JavaScript和CSS开发的优秀编辑器,它具有简洁、灵活的特点,可以轻松地实现富文本编辑的功能。
它支持常见的文字编辑、图片上传、插入链接、表格等功能,对于那些需要在网页中编辑和展示复杂内容的项目来说,是一个非常方便实用的工具。
本文将重点讨论如何在Vue.js中循环生成Wangeditor富文本编译的实现方法。
通过这种方式,我们可以在页面中动态地添加多个富文本编辑器,并对它们进行统一管理和控制。
这种实现方法不仅提高了开发效率,还使得我们可以更好地管理和扩展页面中的富文本内容。
在接下来的章节中,我们将先介绍Vue.js和Wangeditor的基本概念和特点,然后详细讲解循环生成Wangeditor富文本编译的具体实现方法。
最后,我们将总结本文的主要内容,并展望Vue.js和Wangeditor在未来的应用前景。
通过本文的学习,读者将能够了解到如何利用Vue.js和Wangeditor 构建强大的富文本编辑功能,并且能够灵活地在项目中应用它们。
无论是开发个人博客、电子商务网站还是其他Web应用程序,掌握这些技术和实现方法都会对你的开发工作产生积极的影响。
1.2 文章结构文章结构部分的内容如下:文章结构是指整篇文章的组织架构和逻辑顺序。
一个良好的结构可以帮助读者更好地理解文章内容,并使文章更具逻辑性和条理性。
本文主要包含以下几个部分:1. 引言:介绍本文要讨论的问题,概括说明文章的主题和目的,引发读者的兴趣。
2. 正文:主要包括三个部分。
2.1 Vue.js简介:对Vue.js进行简要介绍,包括其定义、特点和用途等。
qt5源码编译QT5(Qt5 Development Kit)是一种多平台开发框架,使用C ++编写,它可以让开发人员使用同一代码库为不同的平台开发图形界面应用程序。
在这篇文章中,我们将学习如何编译QT5源码。
以下是步骤:步骤1:下载源代码您可以通过访问QT5官方网站(www.qt.io)来下载源代码。
在下载页面上选择“源代码”,然后根据您的需求选择合适的版本号。
步骤2:安装依赖项在编译QT5源代码之前,需要安装一些依赖项。
您可以使用下面的命令来安装以下依赖项:sudo apt-get install build-essential libfontconfig1-dev libdbus-1-dev libfreetype6-dev libicu-dev libinput-dev libxkbcommon-dev libsqlite3-dev libssl-dev libpng-devlibjpeg-dev libglib2.0-dev libavcodec-dev libavformat-dev libswscale-dev libx11-dev libxext-dev libgl1-mesa-devlibglu1-mesa-dev libgl-dev步骤3:解压源代码您可以将下载的QT5源代码解压到任何位置,例如/home/user/qt5。
然后,使用终端应用程序进入该文件夹。
步骤4:设置配置文件创建一个名为“qt5Config.conf”的新文件,并使用命令打开它:nano qt5Config.conf复制以下代码并将其粘贴到文件中:./configure -no-sql-sqlite -nomake examples -nomake tests -opensource -confirm-license保存并关闭文件。
步骤5:构建和安装现在,您可以使用以下命令开始构建QT5源代码:./configure -prefix /opt/Qt5makesudo make install此步骤将花费一段时间,具体时间取决于您的计算机速度。
ue编辑器怎么⽤?ultraedit⽂本编辑器使⽤⽅法 ue编辑器的全称是UltraEdit,是⼀款功能强⼤的⽂本编辑器,很多朋友不知道ue编辑器怎么⽤,接下来的这篇⽂章就将为⼤家介绍ultraedit使⽤教程。
⽂中涉及的项⽬使⽤了AVR的Mega168 MCU和Lattice的M4A5 CPLD,IDE为AVR Studio4和ispLEVER,它们都有各⾃的⽂本编辑器,Mega168的源码使⽤C语⾔,M4A5CPLD使⽤Verilog硬件描述语⾔,相应的源⽂件为168.C和M4A5.V。
我们将这两个⽂本⽂件组成⼀个UltraEdit的⼯程⽂件A.prj。
当每次完成编辑修改并保存,进⼊相应的IDE后,会触发IDE的源码重载动作,继续开发流程。
很明显,这是⼀个单⼀⽂本编辑环境的源码开发⽅式。
⼀. ⾼亮语法显⽰⽆论是C语⾔还是Verilog硬件描述语⾔,都有其⾃⼰的关键字和语法,当关键字被突出显⽰的时候,其语法也就被显⽰出来了。
在UltraEdit中,通过关键字的着⾊来实现语法显⽰。
哪些关键字需要着⾊,着何种颜⾊,你都可以⾃⼰定义。
⼆. 函数列表和显⽰折叠C语⾔和许多⾼级语⾔的结构化都是以函数的形式来构建的,当你的视点越⾼时,越能从整体上把握你的系统框架,⽽不是每⼀个函数的细节,这似乎是宏观和微观的关系。
在UltraEdit中,函数列表可以更好地把握系统框架,更快速地进⼊函数的细节。
⽽显⽰折叠可以将C语⾔中的代码块折叠起来,进⽽掩盖这些被折叠部分的细节,从⽽突出了未被折叠的部分,使其成为被关注的焦点。
三. 拆分显⽰有时候在同⼀个程序中,有两个部分需要被同时关注或修改,如果这两部分在程序中的位置相距较远,于是修改起来较⿇烦。
在UltraEdit中,可以进⾏拆分显⽰,你将可以同时看到程序中的两个部分,并在⼀个屏幕中对这两个部分分别修改和编辑。
四. ⾏号显⽰开发过程中,IDE有时会给出⼀些提⽰信息,告诉你程序中某⾏存在语法错误,有些IDE会进⾏位置关联,如果使⽤UltraEdit,可以直接通过⾏号显⽰来快速定位修改。
分享10个程序员常⽤的的代码⽂本编辑器通常操作系统和软件开发包中都包含⽂本编辑器,可以⽤来编辑配置⽂件,⽂档⽂件和源代码。
下⾯是笔者总结的10个最好的免费代码⽂本编辑器:1.NOTEPAD++NOTEPAD++是⼀款免费⼜优秀的⽂本编辑器,⽀持在MS Windows环境下运⾏的多种编程语⾔。
NOTEPAD++⽀持超过50种编程、脚本和标记语⾔的语法⾼亮显⽰和代码折叠,能让⽤户迅速减⼩或扩⼤代码段以便查阅整个⽂档。
⽤户也可以⼿动设置当前语⾔,覆盖默认语⾔。
该程序还⽀持⾃动完成某些编程语⾔的API⼦集。
2.VIMVIM是⼀个可⾼度⾃由配置的⽂本编辑器。
它是Vi编辑器的改进版,同时也是免费软件。
该应有程序的建⽴是为了处理代码以及其他很多事情,⽽不只是为了写电⼦邮件和打开配置⽂件。
它允许你编辑⽂本并保存简单的⽂本⽂件,但它的主要功能是还是编辑代码。
它⽀持语法⾼亮显⽰和⾏编号,这是写程序必备的两个基本功能。
⽤户也可以改变界⾯颜⾊以便增加代码的可视性。
对于⽂本编辑,VIM这个程序囊括了多种语⾔的拼写检查器,并有建议如何更正拼写错误的能⼒。
甚⾄是当你正在编写代码的时候,它也能派上⽤场,因为该应⽤程序只检查不被识别为代码的⽂本。
当然你也可以快速地从这个错误跳到下⼀个以便更好地校对⽂本。
VIM是程序员和开发⼈员应对各种⽂本编辑的最佳选择。
3.GNU EmacsEmacs是⼀个可移植、可扩展、免费的⽂本编辑器。
Emacs提供了⼀些命令来管理语句和段落,⾼亮的语法使得源代码更易于阅读,以及“键盘宏”的⽅式来执⾏⽤户定义的编辑命令。
Emacs可以在若⼲个操作系统上运⾏,⽆论你使⽤的是哪⼀种机器类型。
这让程序员⾮常受⽤。
如果你使⽤的是通⽤的编程语⾔,Emacs还会为你提供模式以及相应的排版和布局,更加⽅便你编辑代码。
Emacs或许不是最简单的⼯具,但它绝对是最强⼤的编辑器之⼀。
相⽐vim,Emacs的启动时间更长,所需要的内存也更多。
#include<iostream.h>#include <string.h>#include <stdio.h> /*文本每行以字符串形式存储,行与行之间以链表存储*/typedef struct line{char *data;struct line *next;}LINE; /*创建一链表,同时向里面输入文本数据*/void Create(LINE * &head){printf ("请输入一页文章,以Ctrl+E(^E)为结尾(每行最多输入80字符!):\n");LINE *p=new LINE; /*首先为链表建立一个附加表头结点*/ head=p; /*将p付给表头指针*/char tmp[100];while(1){gets(tmp); /*输入字符串!*/if(strlen(tmp)>80){printf("每行最多输入80字符");break;}if(tmp[0]==5)break; /*如果发现输入 ^E,则退出输入*/p=p->next=new LINE;p->data=new char[strlen(tmp)+1]; /*为结点分配空间 */strcpy(p->data,tmp);if(tmp[strlen(tmp)-1]==5) /*除去最后一个控制符 ^E */{p->data[strlen(tmp)-1]='\0';break;}}p->next=NULL; /*最后的一个指针为空 */head=head->next;}/*统计字母数*/int CountLetter(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data); /*计算当前 data 里的数据元素的个数*/for(int i=0;i<Len;i++)if((p->data[i]>='a'&&p->data[i]<='z')||(p->data[i]>='A'&&p->data[i]<='Z')) /*计算字母数*/count++;}while((p=p->next)!=NULL); /*遍历链表*/return count; /*返回文章的字母总数*/}/*统计数字数*/int CountNumber(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data); /*计算当前 data 里的数据元素的个数*/ for(int i=0;i<Len;i++)if(p->data[i]>=48 && p->data[i]<=57)count++;/*计算数字数,ASCII码*/}while((p=p->next)!=NULL); /*遍历链表*/return count;}/*统计空格数*/int CountSpace(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data); /*计算当前 data 里的数据元素的个数*/ for(int i=0;i<Len;i++)if(p->data[i]==32)count++; /*计算空格数,空格ASCII码为32*/ }while((p=p->next)!=NULL); /*遍历链表*/return count;}/*统计文章的总字数*/int CountAll(LINE * &head){LINE *p=head; /*保存链表的首地址*/int count=0;do /*计算总字符数*/{count+=strlen(p->data);}while((p=p->next)!=NULL); /*遍历链表*/return count;}/*统计str在文章中出现的次数*/int FindString(LINE * &head,char *str){LINE *p=head;int count=0;int h=0;int len1=0; /*保存当前行的总字符数*/ int len2=strlen(str); /*待统计字符串的长度*/ int i,j,k;do{len1=strlen(p->data); /*当前行的字符数*/for(i=0;i<len1;i++) /*字符匹配*/{if(p->data[i]==str[0]){k=0;for(j=0;j<len2;j++)if(p->data[i+j]==str[j]) k++;if(k==len2) {count++;i=i+k-1;}}}}while((p=p->next)!=NULL); /*遍历链表*/return count;}/*删除指定的字符串*/void delstringword(char *s,char *str)/* *s为输入的字符串,*str为将要删除的字符*/{char *p=strstr(s,str); /*从字符串s中寻找str第一次出现的位置*/ char tmp[80];int len=strlen(s);int i=len-strlen(p);int j=i+strlen(str);int count=0;for(int m=0;m<i;m++)tmp[count++]=s[m];for(int n=j;n<len;n++)tmp[count++]=s[n];tmp[count]='\0';strcpy(s,tmp); /*返回新的字符串*/}void DelString(LINE * &head,char *str){LINE *p=head;do{if(strstr(p->data,str)!=NULL)delstringword(p->data,str);}while((p=p->next)!=NULL); /*遍历链表*/}/*向屏幕输出文章*/void OutPut(LINE * &head){LINE *p=head;do{printf("%s\n",p->data);}while((p=p->next)!=NULL); /*遍历链表*/}void main(){LINE *head;Create(head);printf("输入的文章为:\n");OutPut(head);printf("\n");printf("全部字母数:%d \n",CountLetter(head));printf("数字个数:%d \n",CountNumber(head));printf("空格个数: %d \n",CountSpace(head));printf("文章总字数: %d \n",CountAll(head));char str1[20],str2[20];printf("\n");printf("请输入要统计的字符串:");scanf("%s",str1);printf("%s出现的次数为:%d \n",str1,FindString(head,str1));printf("\n");printf("请输入要删除的某一字符串:");scanf("%s",str2);DelString(head,str2);printf("删除%s后的文章为:\n",str2);OutPut(head);}。
26种基于PHP的开源博客系统26种基于PHP的开源博客系统来源:本站原创以下列举的PHP开源Blog系统中,除了我们熟知的WordPress之外,⼤多都没有使⽤过,其中⼀些已经被淘汰,或者有⼈还在使⽤。
除了做⼀个参考之外,也是想看看,PHP在个⼈⽹站应⽤系统中所发挥的作⽤和产⽣的影响。
1、WordPress是最热门的开源个⼈信息发布系统(Blog)之⼀,闻名遐迩,基于PHP+MySQL构建。
WordPress提供的功能包括:1.⽂章发布、分类、归档。
2.提供⽂章、评论、分类等多种形式的RSS聚合。
3.提供链接的添加、归类功能。
4.⽀持评论的管理,垃圾信息过滤功能。
5.⽀持对样式CSS和PHP程序的直接编辑、修改。
6.在Blog系统外,⽅便的添加所需页⾯。
7.通过对各种参数进⾏设置,使你的Blog更具个性化。
8.静态html页⾯⽣成。
9.通过选择不同主题,⽅便地改变页⾯的显⽰效果。
10.通过添加插件,可提供多种特殊的功能。
11.⽀持Trackback和pingback。
12.⽀持针对某些其它blog软件、平台的导⼊功能。
13.⽀持多⽤户。
14.安装最简单。
15.Web标准⽀持⾮常好。
16.使⽤⽐较简单。
17.拥有⼤量的主题与插件。
2、Lifetype同样是⼀个开源的Blog平台,在同⼀个系统中⽀持多个Blog和多个⽤户。
它具有:友好的⽤户界⾯通过所见即所得⽂章编辑器,你可以编排出整齐漂亮包含图⽚,声⾳以及视频的的⽂章。
做到 Podcasting的功能。
此外通过摘要页⾯,你可以在每次登⼊管理者后台界⾯时就能够了解你Blog⽬前所有统计信息,包含最新⽂章,评论以及引⽤等等。
多媒体⽂档管理通过管理者后台界⾯可以轻松做到⾃动图⽚缩放,上传⼤量⽂档,编写⽂档描述,让你可以很容易建⽴⼀个⽀持Podcasting的Blog。
多样化的主题提供超过60个不同的精美模板供你选择。
通过管理者界⾯,你可以安装,删除,编辑你当前所有的主题丰富的插件程序如果标准安装中没有你想要的功能,可以通过安装其提供的60多种插件来满⾜你的需求。
ASP网站源代码修改方法摘要:一、怎么样去除默认的管理员(joekoe)先用joekoe这个管理员进入后台,找到一个配置管理asp源代码,点基本信息配置,可以修改超级管理员,就是现在的joekoe点用户管理里的某一用户asp.n...一、怎么样去除默认的管理员(joekoe)先用joekoe这个管理员进入后台,找到一个配置管理asp源代码,点基本信息配置,可以修改超级管理员,就是现在的joekoe点用户管理里的某一用户,可以进行类型修改,可改成管理员。
当你添加了别的管理员后,就可以点权限管理,再点某一管理员,就可以设置他的权限了,只要选中就行了。
点击确定。
二、如何添加新的菜单和新的页面添加新的菜单的格式如下:abc:新的菜单那么新建个.asp文件:abc.asp文件内容可以有两种形式:第一种是直接转到你的别的程序或网址上asp是什么,如下:<%response.redirect "你以的文件名或网址"%>第二种是按现在的网站结构生成类似的页面asp源码,如下:<!-- #include file="include/config_other.asp" --><!-- #include file="include/conn.asp" --><%tit="新的菜单"call web_head(0,1asp代码,0asp空间,教程,0)'------------------------------------left----------------------------------call format_login()'----------------------------------left end--------------------------------call web_center(0)'-----------------------------------center---------------------------------response.write ukong%>'以下是页面的内容'可以添加一个系统表格(可随颜色等一起改变)<% response.write kong&table1 %><tr<%response.write table2%>><td> <%response.write img_small("fk0") %> <font class=end><b>表格标题</b></font></td></tr><tr<%response.write table3%>><td align=center>'内容,可以做些HTML的东西</td></tr></table>'以上是页面的内容<%response.write kong'---------------------------------center end-------------------------------call web_end(1)%>三、网站目录及主要文件说明┌./ 网站主目录├ads 广告目录,标准版里可没有├data_jk 数据库目录│├counter.asp 文本记数器的数据文件│├joekoe_data.asp 主数据库,及时进行备份asp源码,可防下载│└ip_address.mdb  IP地址数据库asp源码免费asp空间,一般不作更新├images 图片文件夹│├down 下载栏相关的图片│├face 个人头像,可按顺序添加│├forum 论坛个性图片│├icon  EM贴图│├links 友情链接里LOGO的指定文件夹│├mail 用户短信相关的图片和文件│├main 默认的网站SKIN图片文件夹│├shop 产品相关的图片教程,标准版里可没有│├small 网站大量小图片及公用图片文件夹│├star 用户星级图片│├ubb  UBB相关的图片│└vote 调查相关的图片│├bg.gif 网站背景图片│├bg_dian.gif 背景线图片│├bg2.gif 网站背景2图片│├bg3l.gif 网站左隔栏背景图│├bg3r.gif 网站右隔栏背景图│├joekoe.css 网站CSS配置文件│├joekoe.ani 鼠标文件│├login_bg.gif 用户登陆信息背景图│├logo.gif 网站LOGO图片│└top_logo.gif 网站左上角的标志图├include 网站主程序配置文件│├back_common.asp 配置备份文件│├common.asp 配置文件│├common_other.asp 其它配置文件│├config.asp 网站主模块│├config_counter.asp 网站文本计数程序│├config_frm.asp  UBB帮助工具│├config_nsort.asp 分类模块│├config_other.asp 非主栏目的配置文件│├conn.asp 主数据库连接文件│├conn_ip.asp  IP数据库连接文件│├functions.asp 公共函数模块│├jk_md5.asp  MD5加密模块│├jk_page_cute.asp 分页模块1│├jk_pagecute.asp 分页模块2│├jk_ubb.asp 网站UBB支持模块│├onlogin.asp 后台相关模块│├skin.asp 网站主SKIN文件│└其它...  config_栏目标识.asp为相关栏目的配置模块├admin_login.asp 登陆后台入口├prg 下载栏文件目录,可更名├style 存放网站JS脚本├upload 网站上传文件目录,可更名├index.asp 空间首页├main.asp 网站首页文件├login.asp 登陆及注册文件├help.asp 帮助信息文件├links.asp 友情链接文件└其它... 各栏目文件等四、几个常用的函数即使用方法1、call web_head(0asp教程,0,0,0,0) 按顺序来(“,”隔开)第1个参数(可选三个参数:0,1,2) 0asp文件asp代码,表示不要登陆即可进行浏览该页面; 1,表示在后台设置要登陆浏览时asp空间,表示有权限用户(请查看下面的说明)登陆后才可浏览该页面; 2asp代码,表示强制有权限用户登陆后才可浏览该项页面;第2个参数(可选两个参数:0,1)&教程教程,表示在执行完本函数用户验证后不关闭与清空数据库连接对象; 1,表示在执行完本函数用户验证后关闭与清空数据库连接对象,需配合(callweb_end(1))一起使用;第3个参数(可选三个参数:0,教程,2) 0,表示以左小右大形式的方式显示页面,如本站的文栏一样教程,需配合(call web_center(0))一起使用; 1,表示以左大右小形式的方式显示页面,如本站的动态一样,需配合(call web_center(1))一起使用; 2,表示以满屏方式显示asp文件,不分左右,如本站的文章浏览一样;第3、4两个参数为保留。
汇编语言程序设计实验篇在计算机科学领域中,汇编语言是一种低级编程语言,它直接操作计算机硬件资源,具有高效性和灵活性。
本篇文章将介绍汇编语言程序设计实验的相关内容,包括实验目的、实验环境、实验步骤和实验总结。
实验目的汇编语言程序设计实验的主要目的是使学生掌握使用汇编语言编写程序的基本技能。
通过实践操作,学生将理论知识应用于实际情境中,深化对汇编语言的理解,并培养一定的编程能力。
实验环境在进行汇编语言程序设计实验之前,学生需要准备适当的实验环境。
以下是必备的硬件和软件资源:1. 计算机:一台能够运行汇编语言的计算机。
2. 汇编语言编辑器:如MASM、NASM等,用于编辑和编译汇编语言程序。
3. 调试器:如调试版本的DOSBox、CodeView等,用于调试程序,定位和解决错误。
实验步骤在进行汇编语言程序设计实验时,学生可以按照以下步骤进行操作:1. 确定实验内容:根据实验要求,选择适当的汇编语言程序设计任务,如编写一个计算两个数相加的程序。
2. 编写程序源代码:使用汇编语言编辑器,编写程序的源代码,包括程序的指令、数据段和代码段等。
3. 编译程序:使用编辑器提供的编译指令,将源代码编译成机器码,生成可执行文件。
4. 调试程序:使用调试器,对程序进行调试,定位和解决错误,确保程序能够正常运行。
5. 运行程序:运行已调试通过的程序,验证程序的正确性,并观察程序的执行结果。
6. 优化程序:对程序进行进一步优化,提高程序的执行效率和性能。
7. 总结实验结果:根据实验过程和结果,总结实验经验和教训,思考改进和拓展的可能性。
实验总结通过进行汇编语言程序设计实验,学生可以获得以下收获:1. 熟悉汇编语言:实验使学生更加熟悉汇编语言的语法和指令,增强对计算机底层运行机制的理解。
2. 培养编程能力:实验锻炼学生的编程能力和解决问题的能力,提高他们的逻辑思维和分析能力。
3. 提升实践能力:实验让学生通过实践操作,将理论知识应用于实际情境中,增强实践能力和动手能力。
打开htm文件的几种方法-概述说明以及解释1.引言1.1 概述在撰写本文之前,我们先来了解一下何为htm文件。
HTM是一种用于创建网页的标准文件格式,它是HTML(Hypertext Markup Language)的扩展名。
HTML是一种用于构建网页内容的标记语言,用于描述页面的结构和语义。
打开htm文件是指在计算机上查看和阅读以.htm或.html为后缀的文件。
打开htm文件的目的可以是为了预览自己编写的网页内容,或者是浏览和阅读他人分享的网页文件。
在本文中,我们将介绍几种打开htm文件的方法,以便读者可以根据自己的需求选择最适合的方法。
首先,我们可以使用常见的文本编辑器打开htm文件。
文本编辑器是一种用于编辑和查看纯文本文件的工具,它通常具有语法高亮和代码折叠等功能,方便我们查看和编辑网页的HTML代码。
常见的文本编辑器包括Windows平台下的记事本、Notepad++、Sublime Text以及macOS平台下的TextEdit等。
第二种方法是使用Web浏览器打开htm文件。
Web浏览器是一种用于浏览和访问互联网上网页的应用程序,我们可以通过它来打开和预览htm文件。
常见的Web浏览器有Google Chrome、Mozilla Firefox、Microsoft Edge等,它们通常支持在地址栏中输入本地文件路径来打开本地的htm文件。
另外,我们还可以使用专业的网页编辑软件打开htm文件。
这些软件通常具有更多的功能,如WYSIWYG(所见即所得)编辑模式、页面预览、代码自动补全等,方便我们进行网页设计和调试。
一些常用的网页编辑软件包括Adobe Dreamweaver、Microsoft Expression Web等。
在本文的后续内容中,我们将详细介绍以上提到的方法,并总结它们各自的优劣势。
此外,我们还会介绍一些其他的打开htm文件的方法,如使用在线HTML编辑器等。
通过阅读本文,读者将能够了解到多种打开htm文件的方法,以便根据自己的需求选择最适合的方式。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 1000
typedef char datatype;
typedef struct {
datatype a[MAXSIZE];
int size;
}e_list;
e_list s;
e_list t;
void ptint_slt(e_list slt); /*输出文本*/
void letter_number(e_list slt); /*全部字母个数*/
void space_number(e_list slt); /*全部空格个数*/
void digit_number(e_list slt); /*全部数字总数*/
void size_number(e_list slt); /*文章总字数*/
void dele_print(e_list p,e_list slt); /*输出删除某一字符串后的文章*/
void ptint_slt(e_list slt) /*输出文本*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
printf("%c",slt.a[i]);
j++;
if(j%20==0) printf("\n");
}
}
void letter_number(e_list slt) /*全部字母个数*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
if((slt.a[i]>='a'&&slt.a[i]<='z')||(slt.a[i]>='A'&&slt.a[i]<='Z'))
j++;
}
printf("%d",j);
}
void space_number(e_list slt) /*全部空格个数*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
if(slt.a[i]==' ')
j++;
}
printf("%d",j);
}
void digit_number(e_list slt) /*全部数字总数*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
if(slt.a[i]>='0'&&slt.a[i]<='9')
j++;
}
printf("%d",j);
}
void size_number(e_list slt) /*文章总字数*/
{
printf("%d",slt.size);
}
void dele_print(e_list p,e_list slt) /*输出删除某一字符串后的文章*/ {
int i,j,succ;
i=0;succ=0; /*用i扫描正文t,succ为匹配成功标志*/
while((i<=slt.size-p.size+1)&&(!succ))
{
j=0;succ=1; /*用j扫描模式p*/
while((j<=p.size-1)&&succ)
if(p.a[j]==slt.a[i+j]) j++;
else succ=0;
i++;
}
if(succ)
{
for(j=0;j<(slt.size-p.size-1);j++)
{
slt.a[i-1]=slt.a[i+p.size-1];
i++;
}
slt.size=slt.size-p.size;
for(i=0;i<slt.size;i++)
{
printf("%c",slt.a[i]);
}
printf("\n");
}
else printf("\n错误!没有与字符串相配的子串!"); }
void main()
{
int i;
int right;
s.size=0;
printf("请输入文本:\n");
for(i=0;i<MAXSIZE;i++)
{
s.a[i]=getchar();
s.size++;
if(s.a[i]=='\n') {s.size--; break;}
}
printf("\n文本录入完毕!输出的文本为:\n");
ptint_slt(s);
printf("\n全部字母个数为:");
letter_number(s);
printf("\n全部空格个数为:");
space_number(s);
printf("\n全部数字个数为:");
digit_number(s);
printf("\n文章总字数为:");
size_number(s);
printf("\n要删除的字符串为:");
for(i=0;i<MAXSIZE;i++)
{
t.a[i]=getchar();
t.size++;
if(t.a[i]=='\n') {t.size--; break;} }
printf("\n删除字符串后的结果为:");
dele_print(t,s);
}。