Hej alla programmerare här på SweClockers, jag har nyligen börjat lära mig Objective-C, som liknar C väldigt mycket, och har nu stött på ett problem med scanf. Koden jag bifogar här är den kod jag har, och programmet är inte slutgiltigt, och jag lär troligtvis i framtiden byta ut vissa delar mot klasser och funktioner, men orkade inte med det just nu. I alla fall, mitt problem är alltså att jag har ett antal scanf i min kod för user input, men problemet är att bara den första registreras i koden, och koden går sedan förbi alla if-statements, och hoppar direkt till else (vilket är då den inputen inte är y eller n). Det här är extremt jobbigt när man som nybörjare tycker att koden ser rätt ut, men det blir fel. Koden bifogas nedan, med kommentarer.
//
// main.m
// calculator refined
//
// Created by Leo Sjöberg on 1/15/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
char answer; //confirmation by user
char operator;
int inputFirst;
int inputSecond;
int result;
NSLog(@Insert your equation (valid operators are +, -, *, /):);
scanf("%i %c %i", &inputFirst, &operator, &inputSecond);
NSLog(@Are you sure that you want to compute %i %c %i?, inputFirst, operator, inputSecond);
scanf("%c", &answer); //scanf is not registered?
if (answer == 'y')
{
if (operator == '+')
{
result = inputFirst + inputSecond;
NSLog(@%i %c %i = %i, inputFirst, operator, inputSecond, answer);
}
if (operator == '-')
{
result = inputFirst - inputSecond;
NSLog(@%i %c %i = %i, inputFirst, operator, inputSecond, answer);
}
if (operator == '*')
{
result = inputFirst * inputSecond;
NSLog(@%i %c %i = %i, inputFirst, operator, inputSecond, answer);
}
if (operator == '/')
{
result = inputFirst / inputSecond;
NSLog(@%i %c %i = %i, inputFirst, operator, inputSecond, result);
}
}
if (answer == 'n')
{
while (answer == 'n')
{
NSLog(@Insert your equation (valid operators are +, -, *, /):);
scanf("%i %c %i", &inputFirst, &operator, &inputSecond);
NSLog(@Are you sure that you want to compute %i %c %i?, inputFirst, operator, inputSecond);
scanf("%c", &answer);
}
}
else
NSLog(@That is not a valid answer, program will terminate.);
return 0;
[pool drain];
}
Problemet är som ni ser vid kommentaren på min andra scanf att den inte tar någon user input utan direkt svarar som om att den fick ett svar som inte var y eller n. Någon som vet varför? Om ni har några frågor eller om ni tycker att jag är otydlig får ni gärna säga till så försöker jag förklara bättre
Tack på förhand
Phroggyy
EDIT: kan man dessutom strunta i min if (answer == 'n'), och gå direkt på while-loopen?