当前位置:首页 » 编程语言 » c语言修改字符串

c语言修改字符串

发布时间: 2023-03-27 09:55:21

⑴ 在c语言里在一个文件里搜索一个字符串并进行修改

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
void Substitute(char *pInput, char *pOutput, char *pSrc, char *pDst)
{
char *pi, *po, *p;
int nSrcLen, nDstLen, nLen;
// 指向输入字符串的游动指针.
pi = pInput;
// 指向输出字符串的游动指针.
po = pOutput;
// 计算被替换串和替换串的长度.
nSrcLen = strlen(pSrc);
nDstLen = strlen(pDst);
// 查找pi指向字符串中第一次出现替换串的位置,并返回指针(找不到则返回null).
p = strstr(pi, pSrc);
if(p)
{
// 找到.
while(p)
{
//计算被替换串前边字符串的长度.
nLen = (int)(p - pi);
// 复制到输出字符串.
memcpy(po, pi, nLen);
memcpy(po + nLen, pDst, nDstLen);
// 跳过被替换串.
pi = p + nSrcLen;
// 调整指向输出串的指针位置.
po = po + nLen + nDstLen;
// 继续查找.
p = strstr(pi, pSrc);
}
// 复制剩余字符串.
strcpy(po, pi);
}
else
{
// 没有找到则原样复制.
strcpy(po, pi);
}
}
int main(int ac, char *av[])
{
if (ac!=5) {
printf("程序名 要操作的文件 新文件 查找的字符串 替换的字符串\n");
printf("示例:test.exe 1.txt 2.txt hello love\n");
return 0;
}
const int MAXSIZES = 100;
FILE *fpSrc,*fpDes;
char filename1[20]="1.txt";
char filename2[20]="2.txt";
//要求查找的字符串,替换的字符串;
char ps[]="hello";
char pd[]="love";
//求取所查找和替换的字符串的长度;
int len_src=strlen(av[3]);
int len_des=strlen(av[4]);
//定义存储字符串缓冲区;很奇怪的一点是,fgets函数不能将字符串写入动态分配的内存中
/*char* Src_buf=(char*)(sizeof(char)*MAXSIZES);
char* Cpy_buf=(char*)(sizeof(char)*MAXSIZES);
char* Des_buf=(char*)(sizeof(char)*MAXSIZES);*/
char Src_buf[MAXSIZES] = {0};
char Cpy_buf[MAXSIZES] = {0};
char Des_buf[MAXSIZES] = {0};
//打开文件
if((fpSrc=fopen(av[1],"r+"))==NULL)
{
printf("fail to open the file1 !\n");
exit(1);
}
if((fpDes=fopen(av[2],"a+"))==NULL)
{
printf("fail to open the file2 !\n");
exit(1);
}
//进行循环读取
while(!feof(fpSrc))//判断文件是否已结束;!feof(fpSrc)
{
fgets(Src_buf,MAXSIZES,fpSrc);
Substitute(Src_buf,Des_buf,av[3],av[4]);
fputs(Des_buf,fpDes);
printf("%s",Des_buf);
}
fclose(fpSrc);
fclose(fpDes);
system("pause");
return 0;
}

⑵ C语言如何更改字符串的内容

是的。如果是修改字符串中全部内容,可以使用strcpy

但是,如果是局部修改,部分修改的话,或者是修改字符串中某个指定的字符等等,得自己定义一个函数实现。

⑶ C语言如何更改字符串的内容

是的。如果是修改字符串中全部内容,可以使用strcpy
但是,如果是局部修改,部分修改的话,或者是修改字符串中某个指定的字符等等,得自己定义一个函数实现。

⑷ C语言中结构体的中的字符串的内容如何修改

两步。
1、#include<string.h>
2、strcpy(p->name,(p+1)->name);
也可整体赋值:
*p=*(p+1);

⑸ C语言中,如何在文本文件中搜索指定字符串并修改

编译环境vc2005/dev-c++
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10000 /* 设定文件最大字符个数不超过10000,可更改 */

int main()
{
int i=0,j,k=0,m=0,pos=0,max,len1,len2;
char s[N],t[N],a[200],s1[200],s2[200];
FILE *fp;
printf("Please input file name:\n");/*输入文件名*/
gets(a);
printf("Please input original string:\n");/*输入要替换的字符串*/
gets(s1);
printf("Please input new string:\n");/*输入被替换成的字符串*/
gets(s2);
len1=strlen(s1);
len2=strlen(s2);
if ((fp=fopen(a,"r"))==NULL)/*设定文件位于当前目录下,可更改为绝对路径*/
{ printf("Open file %s error! Strike any key to exit!",a);
system("pause");
exit(1);
}
s[i++]=fgetc(fp);
while(!feof(fp))
{s[i++]=fgetc(fp);<br/>}
fclose(fp);

max=i-1;/* 函渗氏喊数feof()最后会读两次,所以必须减1 */
for(i=0;i<max-len1;i++)
{for(j=0;j<len1&&(s[i+j]==s1[j]);j++);<br/> if(j!=len1)<br/> continue;/* 不相等则i加1进行下一次外循环 */<br/> else<br/> { for(k=0;k<i-pos;k++)/* pos记录开始复制的位置 */<br/> t[m++]=s[pos+k];<br/> pos=i+len1;<br/> for(k=0;k<len2;k++)/* 字符串丛野替换 */<br/> t[m++]=s2[k];<br/> }
}
for(k=pos;k<max;k++)/* 复制剩余字符 */
t[m++]=s[k];
max=m;/* max是替换后文件的字符总数 */
fp=fopen(a,"w");
printf("\n\nThe results are:\n\n");
for(j=0;j<max;j++)
{putchar(t[j]); /* 结果显示到屏幕 */<br/>fputc(t[j],fp); /* 同时结果写入到当核肆前目录下的新文件001.txt中 */<br/>}
printf("\n\n");
fclose(fp);
system("pause");
return 0;
}

⑹ c语言如何把输入的字符串进行转换

1、第一新建一个project。

⑺ c语言编程替换文件中字符串

方法和详细的操作步骤如下:

1、第一步,依次单击visual C ++ 6.0的“文件”-->“新建”-->“文件”-->“C++ Source File”选项,见下图,转到下面的步骤。

⑻ 在c语言中,字符串作在全局区不可修改,那么在堆区可以修改吗

如题中代码是不可以的,原因如下:
p.被定义为字符型指针,接下来给p赋值等于malloc返回的地址;
随后又给p赋值为字符常量的地址,此时并不是把这个常量字符放到malloc返回的地址,而是编译器给字符串常量分配的地址,同时把这个地址赋值给p。常量字符串不可修改。
如果需要让你的想法实现得用字符串复制函数把,字符串复制到malloc返回的内存地址之中。
strcpy(p, "asjwoep;sd'asd");
需要包含头文件string.h。

⑼ 怎样在C语言中修改字符串的一个字符的值

根据字符串存储的变量的不同,方法不同,参考代码:
存储在char数组中(支持C/C++)
char
str[]="hello"
;
int
i;
for(
i=0;str[i];i++
)
printf("%c\n",
str[i]
);
//以数组方式引用一个字符:str[i]
for(
i=0;*(str+i);i++
)
printf("%c\n",
*(str+i)
);
//以指针方式引用一个字符:*(str+i)
存储在string中(仅支持C++)
string
str="abcde";
for(string::iterator
iter
=
s.begin();
iter!=s.end();
iter++)
//使用迭代器
{
cout<<*iter<<endl;
}
cout<<endl;
for(
int
i=0;i<s.length();i++
)
{
cout<<s[i]<<endl;
//使用数组方式调用,得到单个元素
}

⑽ c语言编程替换文件中字符串

方法和详细的操作步骤如下:

1、第一步,依次单击visual C ++ 6.0的“文件”-->“新建”-->“文件”-->“C++ Source File”选项,见下图,转到下面的步骤。

热点内容
ip地址请求远程服务器地址 发布:2024-11-03 00:26:01 浏览:965
android平板系统 发布:2024-11-03 00:20:43 浏览:663
malody谱面服务器地址是什么 发布:2024-11-03 00:19:13 浏览:170
cifslinux 发布:2024-11-02 23:56:04 浏览:311
java培训去哪好 发布:2024-11-02 23:53:57 浏览:861
入手安卓二手机如何检测 发布:2024-11-02 23:47:21 浏览:568
超短发编程 发布:2024-11-02 23:38:48 浏览:132
熊片数据库邀请码 发布:2024-11-02 23:31:39 浏览:762
大连dns服务器ip 发布:2024-11-02 23:29:44 浏览:796
linuxsed文件内容 发布:2024-11-02 23:15:41 浏览:258