當前位置:首頁 » 編程語言 » c語言替換編程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言替換編程

發布時間: 2023-05-12 07:49:31

1. c語言程序設計 單詞替換

//查找並替換指定文件所包含的字元串,保存於另一個文件中

#include "stdio.h"
#include "iostream.h"
#include "string.h"

void main()
{
FILE *fp1,*fp2;
char path[128],path_new[128],search[128],replace[128];

cout<<"input the file path and name."<<endl;//輸入原文件的路徑和文件名
gets(path);
//puts(path);
cout<<"input the new file path and name."<<endl;//輸入新文件的路徑和文件名
gets(path_new);
cout<<"input the words you want to search."<<endl;//輸入所查找的字元串
gets(search);
cout<<"input the words you want to replace."<<endl;//輸入要替換的字元串
gets(replace);

int len;//所查找的字元串的長度
len=strlen(search);
//cout<<len<<endl;
int len_replace;//要替換的字元串的長度
len_replace=strlen(replace);

if((fp1=fopen(path,"r+"))==NULL)//打開原文件
{
cout<<"Can not open this file."<<endl;
//exit();
}

if((fp2=fopen(path_new,"w+"))==NULL)//創建新文件
{
cout<<"Can not open this file."<<endl;
//exit();
}

while(feof(fp1)==0)
{
char ch=fgetc(fp1);
long num=1;//匹配字元計數器

if(ch==search[0])//發現與查找的字元串匹配的第一個字元
{
int err=0;
for(int i=1;i<len;i++)//確定字元串是否完吵凳全匹配
{
ch=fgetc(fp1);
num++;
if(ch!=search[i])
{
err=1;
break;
}
}

if(err==0) //完全匹配
{
for(i=0;i<len_replace;i++)//插入要替換的字元串
fputc(replace[i],fp2);
}

else//未完全匹配,返回指針至與查找的字元串匹配的第一個字元
{
fseek(fp1,-num,1);
ch=fgetc(fp1);
fputc(ch,fp2);
}

}

else fputc(ch,fp2);//復制其他字元串爛碰桐

}

fclose(fp1);/飢坦/關閉原文件
fclose(fp2);//關閉新文件

}

-------------------
C++的程序可以嗎?已經通過調試,希望對你有幫助。

2. c語言編程:字元串替換與移位

幫你寫好了
#include<stdio.h>
#include<string.h>
#define size 100
void main()
{
char a[size],temp;
int i, len;
printf("輸入字元串:\n");
gets(a);
printf("原來的字元串為:\n");
puts(a);
len = strlen(a);
for(i=0; i<len; i++)
{
if(a[i]=='a')
{
a[i]='e';
}
else if(a[i]=='e')
{
a[i]='a';
}
else if(a[i]=='d')
{
a[i]='t';
}
else if(a[i]=='t')
{
a[i]='d';
}
}
printf("轉換後的字元串為:\n");
puts(a);

temp = a[len-1];
for(i=1; i<len; i++)
{
a[len-i] = a[len-i-1];
}
a[0] = temp;

printf("循環右移1位後字元串為:\n");
puts(a);

}

3. c語言編程替換文件中字元串

#include
int
main()
{
file
*fp;
file
*fp2;
fp
=
fopen("test.txt","r");
char
in[100];
char
check[100];
char
out[100];
char
c;
int
count=0;
printf("input
a
string
to
search:
\n");
scanf("%s",in);
/*in本身就是地址,&in指的是同一個地址,但本質上有區別,後者指的整個數組空間*/
while((c=fgetc(fp))
!=
eof)
{
/*問題在這里,你先是fgetc了,也就是說讀了州跡一個字元了,想一想你每次都是在while里讀一個字元串,再在()里做判斷,字元串後面不就是緊跟著換行嗎?*/
fscanf(fp,"%s",check);//同上
if(strcmp(in,check)==0)
count++;
memset(check,0x00,sizeof(check));
}
printf("count:
%d\n",count+1);
printf("input
a
word
to
replace:\n");
scanf("%s",&out);//你懂的
fclose(fp);//記得文件使用輪纖完一定要關閉
fp
=
fopen("test.txt","r");
fp2
=
fopen("test-new.txt","w");
while((c=fgetc(fp))
!=
eof)
{
fscanf(fp,"%s",&check);//
if(strcmp(in,
check)==0)
{
fprintf(fp2,
"%s",
out);
}
else
fprintf(fp2,
"%s",check);
memset(check,0x00,sizeof(check));
}
system("pause");
//關閉文臘跡仿件!
}

4. c語言編程替換文件中字元串

方法和詳細的操作步驟如下:

1、第一步,依次單擊visual C ++ 6.0的「文件」-->「新建」-->「文件」-->「C++ Source File」選嫌孝御項,見下圖,轉到下面的步驟。

5. c語言 怎麼對位進行替換

就是交換兩個變數是吧。另設一個中間變數即可實現。
sbit CY=PSW^7;
sbit K= P1^0;
sbit temp;
temp=CY;
CY=K;
K=temp;
這個思想您應該能明白吧。呵呵。

實現循環左移是吧,就是最高位移到最低位,然後順次左移。
左移指令是把最高位移到C(進位/借位標志)裡面,所以需要把這個標志放到敏簡最低位,也就是說使最低位和進位標志一樣。
設最高位為A,最低位散拿此為B,可得最低位應該為 A非*B+A*B
因此不能用一個獨立的邏輯運算(與、或、非、異或)實現,按照上面給出沖迅的公式即可運算,注意最高位A是在C進位標志中的。

呵呵,這個明白了嗎?

6. c語言編程-字元串替換問題

if((fp=fopen("IN.DAT","r"))==NULL)
用"r"棗棚方式自能笑局打開一個已經存在文件, 估計"IN.DAT"在你的工作目錄下不存在...
for(j=0;j<str-1;j++)這個for循環也沒有大碰岩讓括弧標記包含那幾個語句, 放在後面可以, 因為ch=xx[i][0]的第二維index一直是0,只是這樣會多做一些不必要的工作,降低程序效率...

7. c語言:如何將字元串中指定的字元替換為另一個指定字元

需要准備的材料分別有:電腦、C語言編譯器。

1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。

8. c語言編程:查找並替換此英文文本文件中某字元串

//************************************
//Method:strrpl
//FullName:strrpl
//Access:public
//Returns:void
//Qualifier:字元串替換函數,能替換所有的要替換的字元串,被替換的字元串和替換的字元串不一定一樣長.
//Parameter:char*pDstOut,輸出字元串,要保證足夠的空間可以存儲替換後的字元串.
//Parameter:char*pSrcIn,輸入字元串.
//Parameter:char*pSrcRpl,被替換的字元串.
//Parameter:char*pDstRpl,替換後的字元串.
//注意:以上的字元串均要以''結尾.
//************************************

voidstrrpl(char*pDstOut,char*pSrcIn,constchar*pSrcRpl,constchar*pDstRpl)
{
char*pi=pSrcIn;
char*po=pDstOut;

intnSrcRplLen=strlen(pSrcRpl);
intnDstRplLen=strlen(pDstRpl);

char*p=NULL;
intnLen=0;

do
{
//找到下一個替換點
p=strstr(pi,pSrcRpl);

if(p!=NULL)
{
//拷貝上一個替換點和下一個替換點中間的字元串
nLen=p-pi;
memcpy(po,pi,nLen);

//拷貝需要替換的字元串
memcpy(po+nLen,pDstRpl,nDstRplLen);
}
else
{
strcpy(po,pi);

//如果沒有需要拷貝的字元串,說明循環應該結束
break;
}

pi=p+nSrcRplLen;
po=po+nLen+nDstRplLen;

}while(p!=NULL);
}

9. 在c語言編程中如何實現程序對文本文件中字元串進行替換及生成新的文本文件

我以前剛學C++的時候寫過一個相似的程序,如果你要的是純C語言下的編程,那麼你就參考一下,這個演算法的原理是一樣的,即讀入一個字元就顯示出來。當然你也可以考慮其他實現方式。這個C++的程序中,和C語言區別的主要是有些輸入和輸出不太一樣。還有system("pause")這個是調用系統暫停功能,可能在TC等編譯環境下不能使用,可以考慮使用getch()替換。至於system("cls")是清屏。
相關功能函數為Display_text(),

#include<iostream>
#include<fstream>
#include <iomanip>
#include<windows.h>
using namespace std;

#define MaxSize 65535
int tag[100]; //匹配關鍵字的字元下標,設定最多找到100個關鍵字

typedef struct
{
char data[MaxSize]; //記錄字元值
int len; //保存有效字元串長度
}SqString;

void MainMenu(); //顯示主菜單
void Select_function(char op); //功能選擇
void Display_text(); //顯示本文內容
void Count_ch(); //統計字元數,空格數,行數
void Search_KeyWord(); //檢索關鍵字
void Replace_KeyWord(); //替換關鍵字
void index(SqString s,SqString t); //簡單匹配演算法(BF)
void SetColor(unsigned short ForeColor,unsigned short BackGroundColor); //顏色函數

int main()
{
MainMenu();
return 0;
}

void MainMenu() //顯示主菜單
{
char op;
cout<<"I——打開文本文件\n";
cout<<"T——統計\n";
cout<<"S——檢索\n";
cout<<"R——替換\n";
cout<<"Q——退出\n\n";
cout<<"請選擇:";
cin>>op;
Select_function(op);
}

void Select_function(char op) //功能選擇
{
switch(op)
{
case 'i':
case 'I':Display_text();break;
case 't':
case 'T':Count_ch();break;
case 's':
case 'S':Search_KeyWord();break;
case 'r':
case 'R':Replace_KeyWord();break;
case 'q':
case 'Q':exit(0);
default:cout<<"輸入錯誤,請重新選擇"<<endl;
system("pause");system("cls");
MainMenu();
break;
}
}

void Display_text() //顯示本文內容
{
int i=0;
char c,ch[150];
cout<<"請輸入文件名:"<<endl;
cin>>ch;
system("cls");
ifstream infile;
infile.open(ch,ios::in);
if(!infile)
{
cerr<<"Open file error!"<<endl;
system("pause");system("cls");
MainMenu();
}
while(infile.get(c))
{
cout<<c;
i++;
if(i>=1000&&c=='\n'||i>=1500)
{
cout<<endl<<endl;
system("pause");system("cls");
i=0;
}
}
infile.close();
SetColor(11,8);
cout<<endl<<"文本內容結束!"<<endl;
SetColor(7,0);
system("pause");system("cls");
MainMenu();
}

void Count_ch() //統計字元數,空格數,段落數
{
int i=0,j=0,k=0;
char c,ch[150];
cout<<"請輸入文件名:"<<endl;
cin>>ch;
system("cls");
ifstream infile;
infile.open(ch,ios::in);
if(!infile)
{
cerr<<"Open file error!"<<endl;
system("pause");system("cls");
MainMenu();
}
while(infile.get(c))
{
i++;
if(c==' ')j++;
if(c=='\n')k++;
}
infile.close();
SetColor(11,8);
cout<<"字元數:"<<i<<endl;
cout<<"空字元數"<<j<<endl;
cout<<"段落數(回車次數)"<<k<<endl;
SetColor(7,0);
system("pause");system("cls");
MainMenu();
}

void Search_KeyWord() //檢索關鍵字
{
int i=0,j=0,k=0;
char c,ch[150],kw[50];
SqString s,t;
cout<<"請輸入文件名:"<<endl;
cin>>ch;
system("cls");
ifstream infile;
infile.open(ch,ios::in);
if(!infile)
{
cerr<<"Open file error!"<<endl;
system("pause");system("cls");
MainMenu();
}
cout<<"請輸入關鍵字:";
cin>>kw;
cout<<endl;
while(infile.get(c)&&i<MaxSize)
{
s.data[i]=c;i++;
}
s.len=i;
infile.close();
for(i=0;kw[i]!='\0';i++)
t.data[i]=kw[i];
t.len=i;
index(s,t);
if(tag[0]==-1)cout<<"無此關鍵字"<<endl;
else
{
for(i=0;i<=s.len;i++)
{
if(i==tag[j])
{
for(;i<tag[j]+t.len;i++)
{
SetColor(10,8);
cout<<s.data[i];
SetColor(7,0);
}
j++;
}
else cout<<s.data[i];
k++;
if(k>=1500&&s.data[i]=='\n'||k>=2000)
{
cout<<endl<<endl;
system("pause");system("cls");
k=0;
}
}
SetColor(11,8);
cout<<endl<<endl<<"文本內容結束!"<<endl;
SetColor(7,0);
}
system("pause");system("cls");
MainMenu();
}

void Replace_KeyWord() //替換關鍵字
{
int i=0,j=0,k=0;
char c,ch[150],kw[50],nkw[50];
SqString s,t,nt;
cout<<"請輸入文件名:"<<endl;
cin>>ch;
system("cls");
ifstream infile;
infile.open(ch,ios::in);
if(!infile)
{
cerr<<"Open file error!"<<endl;
system("pause");system("cls");
MainMenu();
}
cout<<"請輸入關鍵字:";
cin>>kw;
cout<<endl;
while(infile.get(c)&&i<MaxSize)
{
s.data[i]=c;i++;
}
s.len=i;
infile.close();
for(i=0;kw[i]!='\0';i++)
t.data[i]=kw[i];
t.len=i;
index(s,t);
if(tag[0]==-1)cout<<"無此關鍵字"<<endl;
else
{
cout<<"請輸入新的字元替代原關鍵字:"<<endl;
cin>>nkw;
for(i=0;nkw[i]!='\0';i++)
nt.data[i]=nkw[i];
nt.len=i;

for(i=0;i<=s.len;i++)
{
if(i==tag[j])
{
for(int n=0;i<tag[j]+nt.len;i++,n++)
{
s.data[i]=nt.data[n];
SetColor(10,8);
cout<<s.data[i];
SetColor(7,0);
}
j++;
}
else cout<<s.data[i];
k++;
if(k>=1500&&s.data[i]=='\n'||k>=2000)
{
cout<<endl<<endl;
system("pause");system("cls");
k=0;
}
}

SetColor(11,8);
cout<<endl<<endl<<"文本內容結束!"<<endl;
SetColor(7,0);
}
fstream outfile(ch,ios::out);
if(!outfile)
{
cerr<<"Open file error!"<<endl;
system("pause");system("cls");
MainMenu();
}
for(i=0;i<=s.len;i++)
{
outfile<<s.data[i];
}
outfile.close();
system("pause");system("cls");
MainMenu();
}

void SetColor(unsigned short ForeColor,unsigned short BackGroundColor) //顏色函數
{
HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,(ForeColor%16)|(BackGroundColor%16*16));
}

void index(SqString s,SqString t) //簡單匹配演算法(BF)
{
int i=0,j=0,k=0;
h0: while(i<s.len&&j<t.len)
{
if(s.data[i]==t.data[j])
{
i++;j++;
}
else
{
i=i-j+1;j=0;
}

}
while(j>=t.len)
{
tag[k]=i-t.len;
k++;
i++;j=0;
goto h0;
}
if(k==0)tag[0]=-1;
}

10. c語言編程替換文件中字元串

方法和詳細的操作步驟如下:

1、第一步,依次單擊visual C ++ 6.0的「文件」-->「新建」-->「文件」-->「C++ Source File」選項,見下圖,轉到下面的步驟。