【发布时间】:2014-01-02 04:09:25
【问题描述】:
我有这个语法。 我对第二个功能有疑问(validateGuess) 这个函数应该检查用户向程序介绍的字符。 我做了一个函数,如果不是 0-9 之间的字母(在 main 上),再次向用户询问一个字母。 但是如果放一封信,程序会要求用户再写一次。 但是如果我输入一个像 22 这样的数字,程序不会再次向用户询问它,因为我不知道如何将输入限制为 1 位。 重要的是要说我的老师要求我们制作了一个 char 数组而不是 int 数组。 我需要 if 语句只在函数中检查它。如果返回1是合法数字,如果是返回0是非法的,应该重新写。
语法如下:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
void GenerateCode(char code[SIZE]);
int validateGuess(char guess[]);
void main ()
{
int i;
char code[SIZE]={0};
char input[SIZE]={0};
GenerateCode(code);
printf("Write your guess please\n");
for(i=0;i<SIZE-1;i++)
{
scanf("%s",&input[i]);
if(validateGuess(&input[i])==0)
{
printf("Wrong input, put a number between 0 to 9\n");
i--;
}
}
system("pause");
}
void GenerateCode(char code[SIZE])
{
int i;
for(i=0;i<SIZE;i++)
{
code[i]=rand()%10;
}
}
int validateGuess(char guess[])
{
int validateGuess=0;
if((guess[0]>=49) && (guess[0]<=57))
validateGuess=1;
return validateGuess;
}
【问题讨论】:
-
这是 C 还是 C++?你也可以添加那个标签吗?
-
scanf("%s",&input[i]);不会像您认为的那样做。阅读scanf()的文档,然后停止使用它。改用合理且实际有用的函数,例如getchar()或fgets()。 -
if((guess[0]>='0') && (guess[0]<='9') && guess[1] == '\0'),正如H2CO3所说,这个scanf有问题。
标签: c arrays function syntax char