Преобразование строки чисел в целые числа - PullRequest
3 голосов
/ 22 октября 2008

У меня есть строка (char), и я хочу извлечь из нее числа.

Итак, у меня есть строка: 1 2 3 4 /0
И теперь я хочу некоторые переменные, чтобы я мог использовать их как целое число: a=1, a=2, a=3, a=4

Как я могу это сделать?

Ответы [ 4 ]

4 голосов
/ 22 октября 2008

Ответы, данные до сих пор, верны, если ваша строка отформатирована так, как вы ожидаете. Вы должны всегда проверять возвращаемое значение sscanf, чтобы убедиться, что все работает хорошо. sscanf возвращает количество успешно выполненных преобразований в приведенном выше случае 4.

if (4 != sscanf(buf, "%d %d %d %d", &a, &b, &c, &d))
{
    /* deal with error */
}

Если бы buf был "1 2 3" или "1 2 a b" или что-то еще, sscanf вернул бы короткий счетчик элементов.

3 голосов
/ 22 октября 2008

Как уже отмечали другие, если вы знаете, сколько чисел ожидать, sscanf является самым простым решением. В противном случае следующие наброски более общего решения:

Сначала токенизируйте строку пробелами. Стандартный метод C для этого: strtok () :

char* copy;
char* token;

copy = strdup(string); /* strtok modifies the string, so we need a copy */

token = strtok(copy, " ");
while(token!=NULL){
  /* token now points to one number.
  token = strtok(copy, " ");      
}

Затем преобразуйте строку в целое число. atoi () сделает это.

2 голосов
/ 22 октября 2008

Если строка всегда содержит 4 числа, разделенных пробелами, то это можно сделать с помощью sscanf:

sscanf(string, "%d %d %d %d", &a, &b, &c, &d);

Если количество чисел меняется, вам нужно будет проанализировать строку.

Пожалуйста, уточните свой вопрос соответственно.

2 голосов
/ 22 октября 2008

sscanf () может сделать это.

#include <stdio.h>

int main(void)
{
  int a, b, c, d;
  sscanf("1 2 3 4", "%d %d %d %d", &a, &b, &c, &d);
  printf("%d,%d,%d,%d\n", a, b, c, d);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...