printf("Enter number of patients:");
int numberOfInputs = scanf("%d", &patients);
if (numberOfInputs != 1) {
printf("ERROR: Wrong number of arguments. Please enter one argument d.\n");
}
我要用户输入一个数字作为自变量,但是如果用户不输入任何内容或输入不止一个输入,则想打印一条语句。例如,一旦提示“输入患者数:”,如果用户在不输入任何内容的情况下按回车,则我想打印一条语句。上面的代码是我在过去的几个小时中一直在专门修改的代码,因为该站点上的一些以前的帖子已经提出了建议,但是当我在终端中运行它时,它不起作用。有什么建议么?预先谢谢您,所有建议都将不胜感激!
答案 0 :(得分:1)
如果我对您的问题理解正确,那么当输入的内容不是整数,并且还包括换行符时,您希望输出错误。您可以使用select fs.sale_id,fs.store_type,fs.sale_time ,
case
when fs.timezone = 'BST' then dateadd( h, 1, fs.sale_time )
when fs.timezone = 'EDT' then dateadd( h,- 4, fs.sale_time )
when fs.timezone = 'CEST' then dateadd( h, 2, fs.sale_time )
when fs.timezone = 'EEST' then dateadd( h, 3, fs.sale_time )
when fs.timezone = 'MSK' then dateadd( h, 3, fs.sale_time )
when fs.timezone = 'WEST' then dateadd( h, 1, fs.sale_time )
else null end, fs.timezone as new_time
from sales fs
where to_char( (
case
when fs.timezone = 'BST' then dateadd( h, 1, fs.sale_time )
when fs.timezone = 'EDT' then dateadd( h,- 4, fs.sale_time )
when fs.timezone = 'CEST' then dateadd( h, 2, fs.sale_time )
when fs.timezone = 'EEST' then dateadd( h, 3, fs.sale_time )
when fs.timezone = 'MSK' then dateadd( h, 3, fs.sale_time )
when fs.timezone = 'WEST' then dateadd( h, 1, fs.sale_time )
else null end),'yyyy-mm-dd') = '2018-09-01'
数组和char
说明符来完成此操作。
示例:
%[]
当用户刚刚按下ENTER键时,也会打印错误。
答案 1 :(得分:0)
这看起来超级复杂,但它基本上是分割输入,将其检查为正好一个,然后将其检查为整数(并将其转换)。它在循环中也可以正常工作,并处理空输入。 我敢肯定有解决这个问题的更优雅的方法,这只是一个建议。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
int getNumberOfInput(char* str);
bool isNumber(char* str);
int main()
{
char str[512];
while(1)
{
printf("Enter text: ");
fgets(str, 512, stdin);
int numberOfInput = getNumberOfInput(str);
if ( numberOfInput == 0 )
printf("You must give an input\n");
else if ( numberOfInput > 1 )
printf("You have to give exactly one input\n");
else
{
if (!isNumber(str))
printf("The input is not an integer\n");
else
{
int input = atoi(str);
printf("input: %d\n", input);
}
}
}
return 0;
}
int getNumberOfInput(char* str)
{
char* word = strtok(str, " \t\n\v\f\r");
int counter = 0;
while(word != NULL)
{
++counter;
word = strtok(NULL, " \t\n\v\f\r");
}
return counter;
}
bool isNumber(char* str)
{
int i, len = strlen(str);
for (i=0; i<len; ++i)
if (!isdigit(str[i]))
return false;
return true;
}