c语言文章编辑实现代码

问题:

文章编辑

功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
  静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
  存储结构使用线性表,分别用几个子函数实现相应的功能;
  输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
  输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include "string.h"
#include<time.h>
#define MaxSize 256
//链表的插入操作

void insertElem(char *sqlist,int*len,int index,char elem){
if(index>(*len)||index<0){
printf("Error!");
exit(1);
}else {
for(int i=*len;i>=index;i--)
sqlist[i+1]=sqlist[i];
sqlist[index]=elem;
*len=*len+1;
}

}

//链表的删除操作

void deleteElem(char *sqlist,int*len,int index){
if(index>(*len)||index<0){
printf("Error!");
exit(1);
}else
{
for(int i=index;i<*len;i++)
sqlist[i]=sqlist[i+1];
*len=*len-1;
}
}

void initSqlist(char *sqlist){
int index=0;
while(index<MaxSize){
char ch=getchar();
if(ch==‘#‘){
sqlist[index]=ch;
break;}
sqlist[index]=ch;
index++;
}
}
int sum_A(char*sqlist,int len){
int in_len=0;
for(int i=0;i<len;i++){
if(sqlist[i]>=‘A‘&&sqlist[i]<=‘Z‘||sqlist[i]>=‘a‘&&sqlist[i]<=‘z‘){
in_len++;
}
}
return in_len;
}
int sum_B(char*sqlist,int len){
int in_len=0;
for(int i=0;i<len;i++){
if(sqlist[i]==‘ ‘){
in_len++;
}
}
return in_len;
}
int sum(char*sqlist){
int in_len=0;
while(sqlist[in_len]!=‘#‘){
in_len++;
}
return in_len;
}
int sum_C(char*sqlist,int len){
int in_len=0;
for(int i=0;i<len;i++){
if(sqlist[i]!=10){
in_len++;
}

}
return in_len;
}
void print_A(char *sqlist,int len){
for(int i=0;i<len;i++){
printf("%c",sqlist[i]);
}
printf("\n");
}
void print_B(char *sqlist,int len){
printf(" 其中字母总数:%d\n",sum_A(sqlist,len));
printf(" 其中空格总数:%d\n",sum_B(sqlist,len));
printf(" 其中文字总数:%d\n",sum_C(sqlist,len));
}

int sun_Char(char*sqlist,int len1,char* substr,int len2){
int flag=0;
for (int i=0;i<len1;i++)
{
for(int j=0;j<len2;j++){
if(sqlist[i+j]!=substr[j])
break;
}
if (j==len2)
{
flag++;
}
}
return flag;
}

void delete_sub_str(char *str, char *sub_str, int *len1,int *len2);
int main(){
char sqlist[MaxSize];
printf("请输入您要编写的文章以字符‘#‘结尾!\n");
initSqlist(sqlist);
int len=sum(sqlist);
printf("您编写的文章如下:\n");
print_A(sqlist,len);
print_B(sqlist,len);
char sub[MaxSize];
char sub1[MaxSize];
go:
printf("输入1表示查询,输入2表示删除:");
int var=0;
scanf("%d",&var);
switch(var){
case 1:
printf("请输入您要查找的字符串:\n");
scanf("%s",sub);
printf("您要查询的字符串在文章中的个数如下:\n%d\n",sun_Char(sqlist,len,sub,strlen(sub)));
break;
case 2:
printf("请输入您要删除的字符串\n");
scanf("%s",sub1);
int len2=strlen(sub1);
delete_sub_str( sqlist, sub1, &len,&len2);
break;
}

printf("您是否要继续操作?\n输入1表示继续");
scanf("%d",&var);
if(var==1){
goto go;
}else
printf("程序操作结束!");
return 0;

}

void delete_sub_str( char *str, char *sub_str, int *len1,int *len2)
{

int i,j,succ;
i=0;succ=0; /*用i扫描正文t,succ为匹配成功标志*/
while((i<=*len1-*len2+1)&&(!succ))
{
j=0;succ=1; /*用j扫描模式p*/
while((j<=*len2-1)&&succ)
if(sub_str[j]==str[i+j]) j++;
else succ=0;
i++;
}
if(succ)
{
for(j=0;j<(*len1-*len2-1);j++)
{
str[i-1]=str[i+*len2-1];
i++;
}
*len1=*len1-*len2;
printf("删除结果如下:\n");
for(i=0;i<*len1;i++)
{
printf("%c",str[i]);
}
printf("\n");
}
else printf("\n错误!没有与字符串相配的子串!");

}

时间: 2024-10-10 16:29:11

c语言文章编辑实现代码的相关文章

编辑HTML代码,批量制作博文清单

当积累的博文多了,常想制作一个分类目录,方便读者阅读.这可以是一个不轻松且枯燥的工作. 以<关于"IT学子成长指导"专栏及文章目录>中目录的制作为例,介绍我的"懒"办法.这个目录常更新,是件事儿.或许算个技巧,背后,全是重复工作过的辛酸.所谓技巧,全是从笨办法中来的. 博文清单制作方法 我要收录到目录中的文章,皆来自于<IT学子成长指导>博客专栏.进入专栏,改到"管理专栏"的页面.选中要进入专栏的文章,CTRL-C复制了事

用Visual Studio编辑Linux代码

估计很多人都是用惯了Visual Studio的主,怎么也不适应Linux的一套编辑器,比如vim.source insight这些东西,可视化的eclipse效果还好点,但一般以远程共享一台Linux服务器为主,没那么好条件一人一个Linux机器. 我用了有几个月的insight,也就看看代码,反正个人感觉就是别扭,现在换成用VS编辑代码,感觉爽多了. 大致方法如下: (1)从svn下载Linux代码到本地目录. (2)打开Visual studio,选择“File” -> “New” ->

DZ3.2文章内容页代码注释,很不错的。

DZ3.2文章内容页代码注释,很不错的.<!--{template common/header}--><!--e之路网络科技--文章页--> <script type="text/javascript" src="{$_G['setting']['jspath']}forum_viewthread.js?{VERHASH}"></script><script type="text/javascript&

抓取天涯文章的蜘蛛代码,刚经过更新(因为天涯页面HTML代码变化)

#_*_coding:utf-8-*- import urllib2 import traceback import codecs from BeautifulSoup import BeautifulSoup def openSoup(url,code): page = urllib2.urlopen(url) soup = BeautifulSoup(page,fromEncoding=code)#,fromEncoding="gb2312" #soup = BeautifulSo

c语言学习之结构篇代码演示样例-输入n个同学的姓名,数学英语成绩,依照平均分从低到高排序并输出

#include<stdio.h> void main(){ const int count = 5;//定义数量 struct student{ char name[80]; float math,eng; float aver; }stu[count],temp; //输入 for (int i = 0; i < count; i++){ scanf("%s%f%f", stu[i].name, &stu[i].math, &stu[i].eng)

常见各种语言程序入口点代码

Borland Delphi 6.0 - 7.000509CB0 > $ 55 PUSH EBP00509CB1 . 8BEC MOV EBP,ESP00509CB3 . 83C4 EC ADD ESP,-1400509CB6 . 53 PUSH EBX00509CB7 . 56 PUSH ESI00509CB8 . 57 PUSH EDI00509CB9 . 33C0 XOR EAX,EAX00509CBB . 8945 EC MOV DWORD PTR SS:[EBP-14],EAX0050

c语言学习之结构篇代码示例-输入n个同学的姓名,数学英语成绩,按照平均分从低到高排序并输出

在虚拟机上测评了下MySQL 和 PostgreSQL 的各种LOAD FILE方式以及时间. 因为是虚拟机上的测评,所以时间只做参考,不要太较真, 看看就好了.MySQL 工具:    1. 自带mysqlimport工具.    2. 命令行 load data infile ...    3. 利用mysql-connector-python Driver来写的脚本. PostgreSQL 工具:    1. pgloader 第三方工具.    2. 命令行 copy ... from

【内容建设】以DEDECMS为例,讲解站内文章编辑的一些注意点,有益无害

以DEDECMS为例,讲解站内文章编辑的一些注意点,有益无害. 1.    标题:尽量拓展长尾词,攻略性为主 2.    自定义属性:方便前台调用.首页更新带动 3.    Tag标签:尽量控制在4-6个字,数量不超过3个 4.    关键词:1-3个,提取标题中的长尾词 5.    内容摘要(描述/尽量不要自动获取): 1) 不超过3行(少5-6字) 2) 包含1-2次标题中的长尾词 3)突出三点:标题(长尾词).医院名称(医师).诊断手法 小结:关键词.描述内容均以标题为中心展开. 正文部分

修改Wordpress-4.0的文章编辑区内容(MCE控件)跟随最外面垂直滚动条滚动的问题

我架设的本地Wordpress-4.0,用于收集有用的文章. 恼火的是, 当粘贴的内容很长时, 文章编辑区MCE控件不出现垂直滚动条, 倒是最外面的窗口出现了滚动条, 这种情况下, 当前视图位置定位到编辑区底部,看不到标题输入input 每次都必须鼠标拖动窗口滚动条 使得标题输入input出现 最好的解决方法自然是修改CSS,不过,这个目前不知道在什么地方修改 有一个简单的办法是: 在最上方的admin-bar里添加一个按钮,称为"回到顶部" 然后设置其href属性为"jav