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