我使用“gcc -O -Wall -Werror”编译我的代码,在搜索论坛后,我试图使fgets函数也无效。我最初尝试没有void。似乎没什么用。顶行是不起作用的特定代码行。
(void) fgets(diceString, 300, stdin);
diceString[strlen(diceString) - 1] = '\0';
使用以下方法检查它的解决方案也没有按照类似的问题工作。
if(fgets(diceString, 300, stdin) ){
我还将提供下面整个代码的上下文
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define INCORRECT_FORMAT 0
#define OUT_OF_RANGE 1
#define INC_NUM_VALUES 2
#define TRUE 1
#define FALSE 0
int main(int argc, char *argv[]){
char diceString[300] = {0};
int diceNum[5] = {0};
int errorType[3] = {0};
int valueCounter = 0;
(void) fgets(diceString, 300, stdin);
diceString[strlen(diceString) - 1] = '\0';
int i = 0;
int j = 0;
char ch = 0;
while(diceString[i] != '\0'){
if(diceString[i] <= '6' && diceString[i] >= '1'){
ch = diceString[i];
diceNum[j] = ch - '0';
j++;
valueCounter++;
}
if(valueCounter >5){
errorType[INC_NUM_VALUES] = TRUE;
}if( i < 4 && diceString[i+1] != ' '){
errorType[INCORRECT_FORMAT] = TRUE;
}if( i > 0 && diceString[i-1] != ' '){
errorType[INCORRECT_FORMAT] = TRUE;
}
i++;
}
printf("The errors are :\n");
i = 0;
while(i < 3){
printf("%d", errorType[i]);
i++;
}
i = 0;
while(i<5){
printf("%d\n",diceNum[i]);
i++;
}
return 0;
}