我试图使用scanf仅读取每行的第一个字符。
使用此输入:
c文件:myciel3.col
c消息来源:Michael Trick(trick@cmu.edu)
c描述:基于Mycielski变换的图。 c不含三角形(编号2),但不断增加
c色号
p边缘11 20
对不起,我的英语不好。
int main(int argc, char *argv[]) {
char option;
int countC = 0;
int countP = 0;
while(scanf("%c",&option) != EOF) {
if(option == 'c') countC++;
else if (option == 'p') countP++;
}
printf("c: %d\tp: %d\n",countC, countP);
return (0);
}
我希望输出为C:5和P:1,但实际输出为c:15 p:2
答案 0 :(得分:2)
您的代码读取输入中的每个字符,而不是每行的第一个字符。
使用fgets
或任何其他获得行的功能。
#include <stdio.h>
int main(int argc, char *argv[]) {
char option[255];
int countC = 0;
int countP = 0;
while(fgets(option, 255, stdin) != NULL) {
if(option[0] == 'c') countC++;
else if (option[0] == 'p') countP++;
}
printf("c: %d\tp: %d\n",countC, countP);
return (0);
}