2014-02-05 60 views
-2

感謝你們所有人,這個時候atof會以某種方式工作。我忘了提,它是一個C++類,所以一些代碼被看似複雜,我:)數組中的數據類型

原來的問題是:

寫一個程序,將發現的最小,最大,或意思是一組 浮點數。程序的第一個參數將是一個 字符串,用於指定用戶期望的操作:min'', max'',sum'', or表示''。所有其他參數都是數字。

如果主要被定義爲接受參數

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

,並假設它被編譯成可執行文件anexe.exe,用我們在課堂學到的程序方法是鍵入以下CMD或外殼: anexe最多1個2 3 4 5

===========

我的問題是:

參數應放在數組argv []中,argv [0]是文件名,argv [1]是字符串min/max/sum/mean,argv [2]和後面應該是數字。但是這些數據類型是什麼?他們是char?如果是這樣,我該如何將它們轉換爲浮點數?

=========== 我的代碼是:

#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

看這裏[鏈接](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*
即。一個(指針)許多char's數組,
未知數,但以\0終止。
=一個C風格的字符串。

要將其轉換爲int型,請使用
,例如atoisscanf

+0

這只是我認爲的教授的習慣?使用指針指針。它的工作原理。 – user3275943

+0

還有什麼「包含」我應該用atof? – user3275943

+0

如果你已經關閉了編譯器警告和/或你像瘋了似的,那麼是的。但這些東西都不是好的做法。 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