Подтвердить что ты не робот

Как читать числа, разделенные пробелом с помощью scanf

Я хочу читать числа (целочисленный тип), разделенные пробелами с помощью функции scanf().
Я прочитал следующие

C, чтение нескольких номеров из одной строки ввода (scanf?)
как читать scanf с пробелами
Мне это не очень помогает. Как читать числа с пробелом в качестве разделителя. Напр. У меня есть следующие номера в качестве ввода 2 5 7 4 3 8 18 Теперь я хочу сохранить их в разных переменных.
Пожалуйста, помогите.

4b9b3361

Ответ 1

Я думаю, что значения по умолчанию, считанные scanf, имеют пробел/ввод. Ну, вы можете предоставить пространство между "% d", если вы печатаете целые числа. То же самое для других случаев.

scanf("%d %d %d", &var1, &var2, &var3);

Аналогично, если вы хотите читать значения, разделенные запятыми, используйте:

scanf("%d,%d,%d", &var1, &var2, &var3);

Ответ 2

Прочитайте как %s[^\n]

а затем прочитайте каждую строку char строки и выполните atoi(), если это char, иначе игнорируйте ее.

Ответ 3

Это должно быть так же просто, как использовать список принимающих переменных:

scanf("%i %i %i", &var1, &var2, &var3);

Ответ 4

int main()
{
char string[200];
int g,a,i,G[20],A[20],met;

gets(string);
g=convert_input(G,string);

for(i=0;i<=g;i++)
    printf("\n%d>>%d",i,G[i]);
return 0;
}

int convert_input(int K[],char string[200])
{
int j=0,i=0,temp=0;
while(string[i]!='\0')
{
    temp=0;
    while(string[i]!=' ' && string[i]!='\0')
        temp=temp*10 + (string[i++]-'0') ;
    if(string[i]==' ')
        i++;
    K[j++]=temp;
}
return j-1;
}

Ответ 5

scanf использует пробелы в качестве разделителя, поэтому, если вы просто скажете scanf("%d", &var), он пропустит любые пробелы, а затем прочитает целое число (цифры до следующей цифры) и не более.

Обратите внимание, что пробелы - это пробелы - пробелы, табуляции, символы новой строки или возврат каретки. Любой из них является пробелом, и любой из них или несколько из них будут служить для разграничения последовательных целых чисел.

Ответ 6

int main(){
    int A[1000];
    char *tok = NULL;
    char *savePtr = NULL;
    char str[1000] = "";
    int totalElement=0;
    printf("Enter space seperated string\n");
    scanf("%[^\n]s", str);
    savePtr = str;

    while((tok=strtok_r(savePtr, " ", &savePtr))){
        A[totalElement++] = atoi(tok);
    }

    for(int i = 0; i < totalElement; i++)
        printf("%d ", A[i]);
}

Ответ 7

Здесь я просто написал простой код c для добавления двух чисел и ввода ввода от пользователя. теперь a и b являются входами, а% d% или% d% d не имеет значения, что вы должны сделать, как только вход запросит только записать первый вход, затем нажмите пробел, затем напишите 2-й вход и так далее. если и просто положить пробел между% d, то и изменения не будут изменены. следовательно, я думаю, что лучший способ - это nly.