gpt4 book ai didi

更改文件中的字符(C 编程)

转载 作者:太空宇宙 更新时间:2023-11-04 05:25:30 24 4
gpt4 key购买 nike

嗯.....我是 C 编程的新手,我被困在一个练习中。我需要创建和写入 .txt 文件,并将字母(或字符,如果您愿意)更改为字母表中的下一个 3。因此,如果我有 The "Dog",则需要将其更改为 "Fri",例如,我当然需要输出它。

这就是我现在所拥有的,代码不完整,因为我无法弄清楚如何更改任何其他字母,因为即使这样也无法正常工作。

它创建一个文件,在其中写入一些内容,关闭它只是为了确保它已正确保存,再次操作它以读取文件,然后继续更改其中的字母。

#include<stdio.h> 

int main(void)
{
char c;
FILE *fp;
fp=fopen("file1.txt","w");

fprintf(fp,"Hello World");
fprintf(fp,"HELLO WORLD");

fclose(fp);
fp=fopen("file1.txt","r");

while(c!=EOF){
c=getc(fp);
if(c=="x"){
c="a";
}else if(c=="y"){
c="b";
}else if(c=="z"){
c="c";
}else if(c=="X"){
c="A";
}else if(c=="Y"){
c="B";
}else(c=="Z"){
c="C";
}
putchar(c);

}

fp=fopen("file1.txt","r");
fclose(fp);

return 0;
}

更新/编辑:

好吧,我已经成功了,我并没有完全理解我应该在代码中更改什么,或者将您所有的答案放在代码中的什么地方,所以我在这里尝试了一次信仰的飞跃,并从您的建议中理解了我的理解char c 可以作为 8 位整数处理,所以我在检查所有其他 if 语句后简单地尝试了 c+=3 。代码现在可以工作了。

#include<stdio.h> 

int main(void)
{
char c;
FILE *fp;
fp=fopen("file1.txt","w");

fprintf(fp,"Hello World");
fprintf(fp,"HELLO WORLD");

fclose(fp);
fp=fopen("file1.txt","r");

while((c=getc(fp))!=EOF){
if (!isalnum(c))
continue;

if(c=='x'){
c='a';
}else if(c=='y'){
c='b';
}else if(c=='z'){
c='c';
}else if(c=='X'){
c='A';
}else if(c=='Y'){
c='B';
}else if(c=='Z'){
c='C';
}else{
c+=3;
}
putchar(c);

}

fclose(fp);

return 0;
}

谢谢大家的建议。他们提供了很多帮助,我知道那些 if 语句可能会更好一些,但话又说回来,我对这类东西还是陌生的。

最佳答案

我认为实现这一点的最简单方法是简单地将字符值加 3。棘手的部分是当你的偏移量从字母表上掉下来时(例如,你将 ascii z 偏移 3,你会得到 })。

你可以尝试这样的事情:

if ( (c >= 'a') && (c <= 'z') )
{
c += 3;
if (c > 'z') // If the character falls off the alphabet, Start over at 'a'
c = c - 'z' + 'a';
}
if ( (c >= 'A') && (c <= 'Z') )
{
c += 3;
if (c > 'Z') // If the character falls off the alphabet, Start over at 'a'
c = c - 'Z' + 'A';
}

这里 c 是您要修改的字符。

关于更改文件中的字符(C 编程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30434368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com