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

char * find_dot();
char * find_end();

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

  char *file_extension[10];

  int i;
  for(i = 1; i < argc; i++){


    //if an option
    if(argv[i][0] == '-'){
      switch(argv[i][0]){

        default:;
      }


    //otherwise, should be the file
    }else{ 
      char *dot_location_ptr;
      char *end_location_ptr;
      char *filename_ptr = argv[i];

      dot_location_ptr = find_dot(filename_ptr);
      end_location_ptr = find_end(filename_ptr);

      memcpy(file_extension, dot_location_ptr, end_location_ptr - dot_location_ptr);

find_dot は「.」へのポインターを返します。引数で strrchr を使用すると、find_end は引数の '\0' へのポインターを返します。

コンパイルはできますが、セグメンテーション違反が発生します。私がやろうとしているのは、ファイル拡張子を文字列としてキャプチャし、その拡張子を他の文字列と比較することだけです。

4

1 に答える 1

1
char *file_extension[10];
     ^

あなたはfile_extension正しいと宣言していません。ポインターの配列ではなく、char 配列が必要です。をドロップし*ます。

于 2013-02-08T20:40:09.180 に答える