gpt4 book ai didi

C:从命令行调用文件

转载 作者:行者123 更新时间:2023-11-30 17:15:55 25 4
gpt4 key购买 nike

在下面的程序中,我有一个随机单词的输入 .txt 文件。

Example:
DOOR FLAG APPLE
CAR

我需要创建输出 .txt 文件,该文件将反转并打印下一行中的每个单词。

Example:
ROOD
GALF
ELPPA
RAC

当我使用命令行参数运行程序时:

program.exe FILEINPUT.TXT FILEOUTPUT.TXT

我得到的输出与输入相同。

这是程序:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void form(char **a,char **b,int n,char* (*t)(char *));
char *invert_words(char *);
void form(char **a,char **b,int n,char* (*t)(char *))
{
int i;
for(i=0;i<n;i++)
b[i]=(*t)(a[i]);
}
char *invert_words(char *x)
{
static char h[25];

int i=0,d=strlen(x),k=0;
if(x[d-1]==' ')
{
x[d-1]=0;
d--;
k=1;
}
while(i<d)
{
x[i]=h[d-i-1];
i++;
}
if(k)
{
x[i]='\n';
x[i+1]=0;
}
return h;
}
int main(int argc,char **argv)
{
FILE *in=fopen(argv[1],"r");
char **a,**b;
int n=sizeof(a)/sizeof(char **);
a=(char **)malloc(n * sizeof(char *));
b=(char **)malloc(n * sizeof(char *));
if(!in)
{
printf("error");
return 1;
}
FILE *out=fopen(argv[2],"w");

char x[25],z;
int k=1;
while(k!=EOF)
{
k=fscanf(in,"%s",x);
if(k!=EOF)
{
fscanf(in,"%c",&z);
form(a,b,n,&invert_words);
fprintf(out,"%s%c",x,z);
}
}
fclose(in);
fclose(out);
free(a);
free(b);
return 0;
}

感谢您的回复。

最佳答案

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

char *invert_words(char *x){
int i=0, d=strlen(x)-1;

for(;i<d; ++i, --d){
//swap
char tmp = x[i];
x[i] = x[d];
x[d] = tmp;
}
return x;
}

int main(int argc, char **argv){
if(argc < 3){
printf("Usage : %s input_file output_file\n", *argv);
return -1;
}

FILE *in =fopen(argv[1], "r");
FILE *out=fopen(argv[2], "w");
if(in == NULL || out == NULL){
perror("file open");
return -2;
}

char x[25], z = ' ';
while(EOF != fscanf(in, "%24s%c", x, &z)){
if(isspace(z)){
fprintf(out, "%s\n", invert_words(x));
} else {
printf("small buffer(char x[25])\n");
break;
}
z = ' ';
}
fclose(in);
fclose(out);
return 0;
}

关于C:从命令行调用文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29828916/

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