c语言 - If 语句未检测到空字符串



我有一个C应用程序,可以从stdin获取用户输入。我有一个验证功能,应该检测用户何时按下ENTER而不向控制台写入任何内容。我已经尝试了if (strSurveyDate[0] == "")if (strcmp(strSurveyDate[0], "") == 0),但这些都不起作用。第一个根本无法执行(显然不满足条件),第二个给出access violation reading location 0x00000000错误。我有一个Trim()函数,它在将输入发送到函数进行验证之前去除前导和尾随空格,所以我不能简单地查找nr等。我已经逐步浏览了代码,""是发送到函数的内容。

我不确定我是否需要包含更多代码,但我会的。这是整个验证函数:

int ValidateSurveyDate(char strSurveyDate[])
{
// declare variables
int intTrue = 1;
int intFalse = 0;
// validate that input was entered
if (strcmp(strSurveyDate[0], "") == 0)
{
printf("ERROR: Please enter a survey date.n");
return intFalse;
}
else { return intTrue; }
}

这是我获取用户输入并将其发送到验证函数的代码:

printf("Please enter the date of the survey.n");
fgets(strSurveyDate, sizeof(strSurveyDate), stdin);
Trim(strSurveyDate);
// validate date of survey
if (ValidateSurveyDate(strSurveyDate) == 1)

如果我需要包含其他内容,请告诉我,我很乐意包含它。感谢您的任何帮助,我真的很感激。


这是Trim()函数,根据要求:

void Trim(char strSource[])
{
int intIndex = 0;
int intFirstNonWhitespaceIndex = -1;
int intLastNonWhitespaceIndex = 0;
int intSourceIndex = 0;
int intDestinationIndex = 0;
// Default first non-whitespace character index to end of string in case string is all whitespace
intFirstNonWhitespaceIndex = StringLength(strSource);
// Find first non-whitespace character
while (strSource[intIndex] != 0)
{
// Non-whitespace character?
if (IsWhiteSpace(strSource[intIndex]) == 0)
{
// Yes, save the index
intFirstNonWhitespaceIndex = intIndex;
// Stop searching!
break;
}
// Next character
intIndex += 1;
}
// Find the last non-whitespace character
while (strSource[intIndex] != 0)
{
// Non-whitespace character?
if (IsWhiteSpace(strSource[intIndex]) == 0)
{
// Yes, save the index
intLastNonWhitespaceIndex = intIndex;
}
// Next character
intIndex += 1;
}
// Any non-whitepsace characters?
if (intFirstNonWhitespaceIndex >= 0)
{
// Yes, copy everything in between
for (intSourceIndex = intFirstNonWhitespaceIndex; intSourceIndex <= intLastNonWhitespaceIndex; intSourceIndex += 1)
{
// Copy next character
strSource[intDestinationIndex] = strSource[intSourceIndex];
intDestinationIndex += 1;
}
}
// Terminate 
strSource[intDestinationIndex] = 0;
}

问题是strSurveyDate[0]是一个字符而不是一个要比较的字符串。

试试这个:

int ValidateSurveyDate(char *strSurveyDate){
// declare variables
int intTrue = 1;
int intFalse = 0;
// validate that input was entered
if (!strcmp(strSurveyDate, "")){
printf("ERROR: Please enter a survey date.n");
return intFalse;
}else{
return intTrue;
}
}

正如Siguza所描述的那样,始终使用-Wall编译,这是一个常见的警告。

相关内容

  • 没有找到相关文章

最新更新