Kompilator nie wykonuje Twojego programu, a jedynie generuje plik wykonywalny na podstawie tego co napisałeś (w dużym uproszczeniu).
Jeśli to czysty C, to raczej będziesz musiał sprawdzać znaki sąsiadujące z i.
Dla przykładu, jeśli Twój ciąg input[]
wygląda tak: 65i+2, to i znajduje się na 3 pozycji. Ma indeks 2. Zatem musisz sprawdzić czy:
input[1] == '+'
input[1] == '-'
input[3] == '+'
input[3] == '-'
Oczywiście zawsze warto zadbać o pokrycie przypadków brzegowych ;)
edit: Podejście jakie zastosowałeś z użyciem scanf
może być tutaj problematyczne, jeśli nie masz pewności co do poprawności ciągu lub jego konkretnego, pożądanego formatu.
Jeśli skupić się tylko na problemie, który podałeś to ja bym to zrobił na przykład tak:
int GetIndexOf( char* input, char searchedCharacter )
{
unsigned int checkedIndex = 0;
while( input && input[checkedIndex] != '\0' )
{
if( input[checkedIndex] == searchedCharacter )
{
return checkedIndex;
}
checkedIndex++;
}
/* No finding in the input string. */
return -1;
int main( void )
{
...
int plusCharacterIndex = GetIndexOf( input, '+' );
if( plusCharacterIndex != -1 && input[plusCharacterIndex-1] != 'i' && input[plusCharacterIndex+1] != 'i' )
{
/* Data is correct */
}
...
}
Oczywiście możesz też tą funkcję wykorzystać w pętli sprawdzając indeksy wszystkich plusów i minusów. Podałem jedynie przykład.