我試圖調試一個程序,它是從標準輸入中得到值'S'或'P'。我的功能calc_resistance()
需要區分這兩種情況,以及既沒有輸入'S'
也沒有輸入'P'
的情況。程序總是評估第三種情況(既不是'S'
也不是'P'),爲什麼這樣呢?比較從標準輸入讀取的字符輸入
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
float calc_resistance(char conn) {
float retval = 0.0;
if (conn == 'S') {
retval = 1;
}
else if (conn == 'P') {
retval = 2;
}
else {
retval = -1;
}
return retval;
}
int main() {
char connection_type[25];
float resistance = 0.0;
while(1) {
printf("Enter 'S' or 'P': ");
scanf("%s", connection_type);
if(strlen(connection_type) != 1 ||
(strncmp(connection_type,"S",25) && strncmp(connection_type,"P",25))) {
printf("Answer not understood. Enter 'S' or 'P'.\n");
continue;
}
break;
}
resistance = calc_resistance(connection_type);
printf("Connection type: %f", resistance);
}