Если вы хотите использовать понятия языка программирования C, рассмотрите возможность использования strtol
intead из atoi
. Это даст вам знать, на каком персонаже он остановился:
Кроме того, никогда не используйте %s
в scanf
, всегда указывайте размер буфера (минус один, так как% s добавит '\ 0' после сохранения ввода)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("string: ");
char x[10];
scanf("%9s",x);
char *s;
int y = strtol(x, &s, 10);
printf("String parsed as:\ninteger: %d\nremainder of the string: %s\n",y, s);
}
тест: https://ideone.com/uCop8
В C ++, если этот тег не был ошибкой, существуют более простые подходы, такие как потоковый ввод-вывод.
Например,
#include <iostream>
#include <string>
int main()
{
std::cout << "string: ";
int x;
std::string s;
std::cin >> x >> s;
std::cout << "String parsed as:\ninteger: " << x << '\n'
<< "remainder of the string: " << s << '\n';
}
тест: https://ideone.com/dWYPx