2012-06-21 17 views
0

나는 여기에 몇 가지 코드를 가지고 :"는 argv [2]"

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

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

     FILE *fp; 

     fp = fopen(argv[1], "r"); 

     if (fp == NULL) 
     { 
      printf ("Errore nell'apertura del file %s\n\n", argv[1]); 
      exit(EXIT_FAILURE); 
     } 

     while ((c = getc(fp)) != EOF) 
     { 
      if (strcmp(c,argv[2]) == 0) 
      { 
       c = argv[3]; 
      } 

      putchar(c); 
     } 

     return 0; 
    } 

첫 번째 질문 : 내가 [2] 내 파일을 ARGV에서 일부 문자를 교체해야 (변수는 argv [1]) argv [3]에 다른 문자들과 함께 ... 나는 그 c = argv[3]이 큰 잘못된 공포이지만 ... 어떻게 argv [3]에 쓴 문자로 "c"를 대체 할 수 있습니까?

EX: out.exe file.txt a b 
    ------ -------- - - 
    program file  1 2 
    name name  letters 

번째 질문 [2] i가 2 문자가 ARGV의 경우, 첫 번째는 대체 문자이고 두 번째가 나는 방법을 쓸 수 있고, i가 교체해야되는 하나이다 ??

EX: out.exe file.txt ab 
    ------ -------- -- 
    program file  1/2 
    name name  letters (both on argv[2]) 
+1

'while ((c = getc (fp))! = EOF)''c'는'char'가 아니라'int'가되어야합니다. 'char'를 사용하면'char'가 서명 된 경우 루프가 일찍 멈출 수 있으며'char'가 서명되지 않은 경우 루프는 전혀 멈추지 않습니다. –

+0

당신은 그 'argc == 4'를 확인해야합니다 – jfs

답변

3

argv는 포인터 char에 배열된다. argv[n]포인터char으로, char이 아닌 값으로 반환합니다. 당신이 그것을 역 참조 다음에 첫 번째 char포인터argv[n] 포인트를 획득 할 경우

char c = *(argv[n]) // or argv[n][0] 

을 그뿐만 아니라 두 번째 질문에 대답해야한다 생각합니다.

+0

고맙습니다 당신이 나를 비추는 사람이 – Lc0rE

+0

칭찬인가요, hehe? – jn1kk

+0

예. 칭찬입니다.) – Lc0rE