2014-02-05 4 views
-2

여러분 모두 덕분에 atof가 어떻게 든이 시간에 작동합니다. 내가 그렇게 코드의 일부는 나에게 복잡하게 보이는하는 C++ 클래스가 있음을 언급하는 것을 잊었다 :배열의 데이터 유형

원래 질문은 :

는 최소, 최대를 찾을 수있는 프로그램을 작성하거나 평균은 부동 소수점 집합의 집합입니다. 프로그램에 대한 첫 번째 인수는 사용자가 원하는 작업을 지정하는 문자열입니다. min'', max '', sum'', or ''. 다른 모든 인수는 숫자입니다. 주요 만약

이 인수를

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

을 받아들이고의 그것이 실행 파일 anexe.exe로 컴파일 말할 수 있도록 정의, 우리가 수업 시간에 배운 프로그램을 사용하는 방법은 상기에 다음을 입력하다 cmd를 또는 쉘 : anexe 최대 1 2 3 4 5

===========

내 질문은 :

argv [0]은 파일 이름이고, argv [1]은 min/max/sum/mean 문자열이고 argv [2]는 나중에 숫자 여야합니다. . 그러나 이들의 데이터 유형은 무엇입니까? 그들은 숯? 그렇다면 어떻게 그들을 float로 변환 할 수 있습니까?

===========는 내 코드는 다음과 같습니다

#include <iostream> 
#include <string> 
#include <stdlib.h> 
using namespace std; 

int main (int argc, char* argv[]) 
{ 
std::string option = std::string(argv[1]); 

if (argc >1) 
{ 
    int i = 2; 
    if (option == "min") 
     { 
      float least = atof (argv[2]); 
      for(i = 2;i <=(argc-1);i++) 
      { 
       int temp = atof(argv[i]); 
       if (temp < least) 
       {least = temp;} 
      } 
      cout <<"\n"<<least; 
      return 0; 
     } 
+0

'argv'의 데이터 유형은 무엇입니까? Ergo,'argv [i]'의 데이터 타입은 무엇입니까? 따라서'char * '를'float'으로 변환하는 법을 알아야합니다. 많은 옵션이 있지만, 나는 개인적으로 ['std :: stringstream'] (http://en.cppreference.com/w/cpp)의 사용을 고려할 것입니다. – BoBTFish

+0

여기를보세요 [link] (https://www.google.com/search?btnG=1&pws=0&q=C+convert+char*+to+float) – BeerBaron

+0

코드를 보여주세요! –

답변

0

컴파일러에 따라, 당신은해야합니다

내 동료에 의해 지적 떠있는 문자를 변환하고,
atof(char *str); 

, 당신은해야합니다 :

char* argv[] 

하지, 문자 ** argv [];

1

첫째,

char* argv[] 

하지

char** argv[] 

그리고 데이터 유형 argv[x]의 값은 char*
입니다.
알 수없는 수의 배열로 (포인터를) 지정했지만 \0으로 끝납니다.
= C 스타일의 문자열.

int 유형으로 변환하려면
을 사용하십시오 (예 : atoi 또는 sscanf).

+0

그건 내가 생각하는 교수님의 습관 일 뿐이에요? 포인터에 대한 포인터를 사용하십시오. 그리고 그것은 작동합니다. – user3275943

+0

또한 atof를 사용하기 위해 사용해야하는 "포함"이 있습니까? – user3275943

+0

컴파일러 경고를 끄거나 미친 듯이 캐스팅하는 경우 yes입니다. 그러나이 모든 일은 좋은 습관이 아닙니다. stdlib.h – deviantfan

0

argv[i]은 유형이 char *입니다. 값 인수는 "3.1415"과 같이 부동 소수점 숫자의 문자열 표현입니다.그것은, 당신은 다음 중 하나 부동 소수점 상당을 할 수 있어요에 floting입니다 소수점 숫자의 문자열 표현을 변환하려면 :

#include <stdio.h> 
... 
double val; 
int success = sscanf(argv[i], "%f", &val); 
if (success == 0) 
    // argv[i] is not a valid floating-point number string 

또는

#include <stdlib.h> 
#include <ctype.h> 
... 
double val; 
char *chk; 
val = strtod(argv[i], &chk); 
if (!isspace(*chk) && *chk != 0) 
    // argv[i] is not a valid floating-point number string 

두 번째 방법은 오류를 잡는다을 그 첫 번째 원 그래서 내가 선호하는 것이지.

-1
int value = atoi(argv[1].c_str()); 

약간 도움이 될 것입니다.

+0

http://stackoverflow.com/questions/5029840/convert-char-to-int-in-c-and-c – Olu