gpt4 book ai didi

C 文本转换程序

转载 作者:行者123 更新时间:2023-11-30 15:24:44 29 4
gpt4 key购买 nike

我对 C 语言非常陌生,一直在开发一个程序,该程序接受文本文件或键盘输入,然后将所有字母转换为大写、小写,或者根据输入将它们旋转 13 个位置由用户给出,应该类似于:./tconv -u test.txt理论上,这应该将 test.txt 中的所有字母转换为大写字母。如果没有给出文件,./tconv -u,那么它应该从键盘获取输入。

我认为我错过了一些相当简单的东西,但是当我使用任何 -r、-u 或 -l 参数运行它时,它说它无法读取“-r”、“-u”或“-l” 。我错过了什么?

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>

FILE*
input_from_args(int argc, const char *argv[])
{
if (argc==1){
return stdin;
}else{
return fopen(argv[1],"r");
}
}

int
rot13(c)
{
int e;
int ROT;
ROT = 13;
if(c>='A' && c <='Z'){
if((e=c+ROT)<='Z')
return e;
else{
e = c - ROT;
return e;
}
}
else{
return c;
}
}

int
main(int argc, const char*argv[])
{
FILE *src = input_from_args(argc,argv);
FILE *dest = stdout;
if (src == NULL){
fprintf(stderr, "%s: unable to open %s\n", argv[0], argv[1]);
exit(EXIT_FAILURE);
}
char *rotate = "-r";
char *lower = "-l";
char *upper = "-u";
int i;
i =0;
int ch;
while ((ch = fgetc(src))!=EOF){
if (strcmp(upper,argv[i])==0){
fprintf(dest,"%c",toupper(ch));
}
else if (strcmp(lower,argv[i])==0){
fprintf(dest,"%c",tolower(ch));
}
else if (strcmp(rotate,argv[i])==0){
fprintf(dest,"%c",rot13(ch));
}
else{
fprintf(dest,"%c",ch);
}
}
fclose(src);
return EXIT_SUCCESS;
}

最佳答案

Argv[0] 是您的程序,argv[1] 是您的标志,argv[2] 是文件名(如果您提供了文件名)。您正在尝试打开 argv[1] 名为“-r”的文件

关于C 文本转换程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266902/

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