【发布时间】:2018-05-01 09:17:34
【问题描述】:
我在代码中的目标是用 80 个字符初始化字符串,并且仅当用户键入不是 '\0' ,' ' ,'\t' ,'\n' 的字符时。打印“非法命令”。
现在,如果用户输入例如 3 个字符的空格并按 enter 。输出为 (80-4)=76 次“非法命令”。它根本不需要打印,因为用户输入的所有字符都是'\0'、' '、'\t'、'\n' 之一。
在这种情况下请帮助我。
代码:
void main() {
int i;
char str[80]="";
gets_s(str, sizeof(str));
for (i = 0; i < 80; i++)
{
if ((str[i] != '\n' && str[i] != '\0' && str[i] != '\t' && str[i] != ' '))
{
printf_s("illegal character: %c\n", str[i]);
}
}
}
【问题讨论】:
-
也许在
printf_s之后放置一个break声明。 -
那不是我的朋友。最后我会这样做,但这不是问题。问题是编译器输入了条件虽然我只输入空格并按回车。如果我输入 80 次空格,它将不会进入条件。但是如果我按1个时间空间然后输入,输出将是(80-2)次“非法命令”
-
请edit您的问题,您需要提供一些输入示例和所需输出。
-
另外,您可能需要指定您的系统(操作系统、编译器等),因为问题可能与系统有关。
-
void main()-->int main(void)。如果您将str初始化为char str[80] = {'\0'};,您的输出是什么?