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()
函数。
所以我现在正在尝试制作一个程序。 我尝试使用 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()
函数。