如何将字符串转换为int或float类型?

时间:2015-10-02 23:21:43

标签: c pointers struct int string-parsing

我在将In [6]: links = {'fox': [], 'dog': []} In [7]: text = "The quick brown fox jumps over the lazy dog. fox. Redfox." In [8]: reg_iter(text, links) Out[8]: {'dog': [(40, 43)], 'fox': [(16, 19), (45, 48)]} creditos的值放在结构中时遇到问题。

我有一个文件,例如:

  

等级:4.5

我使用nota,但它返回一个字符指针,我需要strtokint

float

1 个答案:

答案 0 :(得分:0)

在您的代码中,token是指向char的指针,与C中的字符串相同。

使用atoi将字符串转换为int

_materias->creditos = atoi(token);

使用atof将字符串转换为float

_materias->nota = atof(token);

如果您需要让程序对输入文件中的错误更加健壮,请改用strtolstrtof。如果您的输入文件可能有错误(即始终),则它们更难使用但更安全。

或者,使用sscanf - 它可能比strtolstrtof更容易使用,并且支持检测错误,但它没有类型安全性,因此可能导致难以使用 - 令人沮丧的崩溃。

用法:

if (sscanf(token, "%d", &_materias->creditos) != 1)
    fprintf(stderr, "Error\n"); 

if (sscanf(token, "%f", &_materias->nota) != 1)
    fprintf(stderr, "Error\n");