2013-08-13 3 views
1

Я новичок в этой области, поэтому я надеюсь, что я мог бы получить обходной путь к этимКак выбрать/чтение/копирование значения после определенного символа в строке

Как я могу прочитать или скопировать или выберите значение числа после определенного символа в строке?

Пусть говорят, у меня есть строка:

"ANS = (любое число, представленное)"

как я может выбрать (любое число представлено) только часть?

Допустим, что представленное значение равно 999. Таким образом, строка будет «ans = 999» .. как я могу копировать 999 в этом случае? Я хотел использовать значение позже для atoi()

заблаговременно. действительно ценю помощь здесь

ответ

2

strchr функция возвращает строку, начиная с первого экземпляра указанного символа

+0

А .. Я читал об этом раньше, но не понял. Теперь я знаю, где подчеркнуть. Спасибо – hrzrfn

3

Учитывая строку в виде ans=999, вы обычно используете strchr() найти =.

Так,

char *arg = strchr(string, '='); 
if (arg != NULL) 
{ 
    arg++; /* we want to look at what's _after_ the '=' */ 

    printf("arg points to %s\n", arg); 
} 
else 
    /* oops: there was no '=' in the input string */ ; 

должен печатать

arg points to 999 
+0

Спасибо за решение. Я успешно преобразовал значение, используя atoi() тоже .. спасибо! – hrzrfn

1

Вы можете достичь его с strchr:

Возвращает указатель на первое вхождение символа в C струнной ул.

Вы просто должны найти характер = и принять все, что после того, как:

#include <string.h> // For strchr 

char* ans = "ans=999";   // Your string with your example 
char* num = strchr(ans, '='); // Retrieve a pointer to the first occurence found of = 

if (num != NULL)    // Test if we found an occurence 
{ 
    arg++;      // We want to begin after the '=' 

    printf("The number : %s", arg); // For example print it to see the result 
} 
else 
{ 
    // Error, there is no = in the string 
} 
+0

Благодарим за решение. Я успешно преобразовал значение, используя atoi() тоже .. спасибо! – hrzrfn

0

Одним из способов является использование strchr, как упоминалось выше. Это указывает на то, где этот символ сначала находится в строке. Но если вы знаете, что у вас есть «ans = #» в качестве формата каждый раз. Зачем тратить процессорное время на strchr? Более быстрый способ - это sscanf. Примером может служить:

char *string = "ans=999"; 
int number, scanned; 

scanned = sscanf(string,"ans=%d",&number); 

if(scanned < 1) 
printf("sscanf failure\n"); 

Что это такое, он захватывает 999 в строке и помещает его в число. sscanf также возвращает количество проверенных номеров, поэтому вы можете использовать их позже для проверки ошибок и т. д.

Смежные вопросы