簡體   English   中英

更新的命令行參數

[英]UPDATED command line arguments

所以我終於能夠讓我的換位密碼工作了。 但我需要能夠從命令行參數中獲取變量。 例如,transposition []給出的轉置表可以根據命令行參數中的輸入進行更改,同樣在命令行中給出一個npos,它確定我總共移動了多少個字符。 例如,如果我輸入命令行“a.out fileinput.txt fileoutput.txt 2 4 2 4 0 1”它應該使我的程序識別轉置數組中只有4個變量和轉置中的數字數組是“2 4 0 1”。 基本上,我只是想知道是否有辦法從命令行中獲取數字,然后將它們存儲到一個數組(特別是轉置數組)中。 我已經嘗試使用sscanf來接受命令行中的不同參數,但它似乎無法正常工作。

更新的當前代碼:

#include <stdio.h>

int main(int argc, char *argv[]){

char transposition[]={};
char input[256];

char ch;
int i, j, k, npos;

FILE *file1=fopen(argv[1], "r");
FILE *file2=fopen(argv[2], "w");

sscanf(argv[3], "%d", &npos);
for(i=0;i<npos;++i){
sscanf(argv[4+i], "%d", &k);
transposition[i] = k;
}

int len= sizeof(transposition);
char temp[len];

while(fgets(input,sizeof(input),file1)!=NULL){
i=0;
do {
for(j=0;j<len;j++){
    ch = input[i];
    if(ch != '\n' && ch != '\0'){
        temp[j] = ch;
        ++i;
    } else {
        temp[j] = ' ';
    }
}
if(temp[0] != '.')
    for(k=0;k<len;k++){
        fprintf(file2,"%c", temp[transposition[k]]);
    }
}
while(ch != '\n' && ch != '\0');
fprintf(file2,"\n");
}
return 0;
}

原始工作代碼:

#include <stdio.h>

int main(int argc, char *argv[]){
char transposition[]={2,4,0,1,3};
char input[256];
int len= sizeof(transposition);
char ch, temp[len];
int i, j, k;

FILE *file1=fopen(argv[1], "r");
FILE *file2=fopen(argv[2], "w");

while(fgets(input,sizeof(input),file1)!=NULL){
i=0;
do {
    for(j=0;j<len;j++){
        ch = input[i];
        if(ch != '\n' && ch != '\0'){
            temp[j] = ch;
            ++i;
        } else {
            temp[j] = ' ';
        }
    }
    if(temp[0] != '.')
        for(k=0;k<len;k++){
            fprintf(file2,"%c", temp[transposition[k]]);
        }
}
while(ch != '\n' && ch != '\0');
fprintf(file2,"\n");
}
return 0;
}
...
sscanf(argv[4], "%d", &npos);
char transposition[npos];
...
for(i=0;i<npos;++i){
    transposition[i] = atoi(argv[5+i]);//atoi : <stdlib.h> or sscanf(argv[5+i], "%d", &k);transposition[i] = k;
}
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM