0

コマンドラインから他の入力を取得する方法を知りたいですか? 「-w」と数字を探したいので、「-w60」と「-s」のようになります。この入力はコマンド ラインから行うため、次のようになります。


c:\Users\Username\Desktop> wrapfile.exe -w5 -s test.txt

出力は次のようになります。

こんにちは  
、  
これ  
です  
テスト

-w5 と -s の意味は次のとおりです。

-w5 = 幅 (一度に 5 文字しか表示できません)

-s = 間隔 (間隔を含めて、できるだけ多くの単語全体に合わせてください)

これらの 2 つの文字をスキャンする関数を作成したいのですが、必要な処理を行うために出力をフォーマットする方法を知っている人がいれば、それも役に立ちます。

私は少し混乱しています。私はこのプログラムにしばらく取り組んできましたが、これらをスキャンして適切に使用する方法を学びたいだけです。

コマンドラインからテキストファイルを無制限に取り込む現在のコードは次のとおりです。

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

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

    int l = 1;
    while(l != argc)
    {
        FILE *fp;    

        fp = fopen(argv[l], "rb");
        l++;

        if (fp != NULL) 
        {
        int i = 1;
        do
        {
            i = fgetc(fp);   
            printf("%c",i);
            printf(" ");
        }
        while(i!=-1);
        fclose(fp);
        }
        else
        {
        printf("Error.\n");
        }
    }
}

/*

void scanningForWS(int argc, char **argv)
{
}

*/
4

2 に答える 2

2

プログラムに渡す場合-w5 -s test.txt、argv は次のとおりです。

argv[0] = "wrapfile.exe" 
argv[1] = "-w5" 
argv[2] = "-s" 
argv[3] = "test.txt"

そう:

int l = 1;
fp = fopen(argv[l], "rb");

あなたが確かに望むものではありません。

説明のために...「制限された」幅に印刷するには、次のようにすることができます:

char * h = "this is a string longer than width"; // you'd get this from your file
int width = argv[1][2] - '0'; // you wouldn't hardcode this...
int count;

for(count = 0; count < strlen(h); count++){
    if((count % width) < width - 1)
        printf("%c", str[count];
    else
        printf("%c\n", str[count];
}
于 2012-12-07T16:32:41.357 に答える
0

使いづらいと思いますgetopt。独自のテストを作成することはそれほど難しくありません。例えば:

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

int main(int argc, char **argv) {
   int haveSpacing = 0;
   int haveWidth = 0;
   FILE *fp = 0;
   while (*++argv) {
      if (!strcmp(*argv, "-s")) { // check for -s switch
         haveSpacing = 1;
      }
      else if (sscanf(*argv, "-w%d", &haveWidth) == 1) { // check for -wxx
      }
      else if (**argv == '-') { // reject anything else beginning with "-"
         printf("invalid switch %s\n", *argv);
         return 1;
      }  
      else if (argv[1]) { // filenaname must be last arg, so arg[1] must be NULL
         printf("invalid arg %s\n", *argv);
         return 1;
      }
      else if (!(fp = fopen(*argv, "rb"))) { // open last arg, the filename
         perror(*argv);
         return 1;
      }
   }
   if (!fp) {
      printf("missing filename\n");
      return 1;
   }

   // ...
   return 0;
}
于 2012-12-07T17:16:38.250 に答える