c字符串用户输入为空时如何发送错误消息?

How to send an error message when c-string user input empty?

所以我现在正在尝试制作一个程序。 我尝试使用 c 字符串获取名称并使用菜单 #2 输出用户输入 另外,我想发送一条错误消息,并要求用户在用户输入空白时再次输入名称。

真正的问题是,我知道当我有一个空字符串时如何发送错误消息,但我不知道当我有一个空 c- 字符串时。

这是我的程序。

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <cstring>
using namespace std;
void inputPika(char[]);
void display_menu();
void displayPika(char[]);
void display_menu()
{
    //Display menu for user selection
    cout << "The Name game: " << endl;
    cout << "1. Pika Name " << endl;
    cout << "2. Display Pika Name " << endl;
}
void inputPika(char a[])
{
    const int SIZE = 40;


    cin.getline(a, SIZE);
}
void displayPika(char a[])
{
    cout << a << endl;
}
int main()
{
    int pick = 0;
    const int SIZE = 40;
    char name[SIZE];
    cin.ignore();

    while (true)
    {
        display_menu();
        cin >> pick;
        cin.ignore();

        switch (pick)
        {
        case 1:
            cout << "1. Input Name: ";

            inputPika(name);
            break;
        case 2:
            cout << "2. Display Name: ";
            displayPika(name);
            break;
        }
    }
}

(遗憾的是,我的其他函数需要 c- 字符串,所以我不能将所有内容都更改为字符串) 还有一个问题。

当我运行我的程序时,程序不会自动运行,我必须按回车才能看到菜单选项。我不确定为什么我的程序会这样做。

为了解决 "automatic run" 你应该删除以下内容:

cin.ignore();

在您的情况下,空 "name" 将反映在缓冲区中的 '[=11=]' (空终止符)字符中,因此您可以检查 return 之后是否 name[0] == '[=12=]' 来自inputPika() 函数。