2013-02-11 47 views

回答

5

您的問題不明確。這裏有三種可能的解釋和答案。

  1. 在C「串」的每一個角色,其實是一個小的整數,你可以通過簡單的索引檢索數組。

    int first = p[0]; 
    
  2. 如果您知道該字符串的第一個字符是一個數字,你想它的價值作爲數字,你可以採取的事實,即通過'9''0'字符代碼,保證優勢是連續的,不斷增加:

    int first_dv = -1; 
    if (p[0] >= '0' && p[0] <= '9') 
        first_dv = p[0] - '0'; 
    
  3. 如果你說錯了,你居然要到整個字符串過程作爲一個十進制數,你這樣做有strtol,或者strtoul如果號碼不應該被解釋爲負:

    char *endp; 
    errno = 0; 
    long numeric_value = strtol(p, &endp, 10); 
    if (endp == p || *endp) { 
        fprintf(stderr, "junk after number: %s\n", endp); 
    } else if (errno) { 
        fprintf(stderr, "%s: invalid number (%s)\n", p, strerror(errno)); 
    } 
    

    這些在<stdlib.h>聲明。你做不是做到這一點與atoisscanf,反其他許多人會告訴你:atoi不會告訴你,如果有數量後有垃圾,sscanf不僅不會告訴你,它是允許的數字溢出導致程序崩潰。

+0

他也使用的名稱的argv這可能意味着他所談論的論點是一個二維數組。 – 2013-02-11 02:32:19

+0

+1以確保完整性。 – 2013-02-11 02:35:01

相關問題