如果没有输入,如何退出代码?代码示例:检查字符串是不是为回文? (在 C 编程语言中)
Posted
技术标签:
【中文标题】如果没有输入,如何退出代码?代码示例:检查字符串是不是为回文? (在 C 编程语言中)【英文标题】:How to exit code if nothing is entered? Code example: Check if string is a palindrome or not? (in C Programming Language)如果没有输入,如何退出代码?代码示例:检查字符串是否为回文? (在 C 编程语言中) 【发布时间】:2019-05-13 02:02:13 【问题描述】:问题:如果没有在 STDIN(控制台)中输入任何内容,如何退出代码?
例如:
*输入 “NULL - 无 - 零” :)
预期输出 (关闭程序退出循环)*
输入:
你好
输出:
你好不是回文
输入:
奥特
输出:
奥托是回文
代码说明: 回文是一个字符串短语,向后和向前读取相同。回文的例子有“ABCDCBA”、“otto”、“i am ma i”、“C”。编写一个程序,读入一行文本,并打印出该行文本是否为回文。
#include <stdio.h>
#include <string.h>
#define MAXLEN 100
void reverseString(char *str, char *reversedStr)
int i;
for (i=strlen(str)-1; i>=0; i--)
*reversedStr++ = *(str+i);
*reversedStr = '\0';
int main(int argc, char **argv)
char str[MAXLEN];
char reversedStr[MAXLEN];
while (fgets(str, sizeof(str)-1, stdin) != NULL)
str[strlen(str)-1] = '\0'; // the last character is the newline. Replace with null
reverseString(str, reversedStr);
if (strcmp(str, reversedStr) == 0)
printf("%s is a palindrome\n", str);
else
printf("%s is not a palindrome\n", str);
return 0;
代码片段: https://onlinegdb.com/ByGKe8LnE
【问题讨论】:
在您的代码中,如果用户不输入任何内容然后按回车键,那么在您将其替换为空终止符之前,唯一的字符就是换行符。因此您可以在替换之前检查这是否是唯一的字符,这样您就可以知道用户是否没有输入任何内容。 比较fgets
和'\0'
的返回值没有意义,因为你是在比较一个指向空字节的指针。相反,将其与空 指针 进行比较,即while (fgets(...) != NULL)
。然后它应该做你想要的。
@TomKarzes 感谢这实际上在原始代码中,但对其进行了编辑以查看是否会影响代码
@ChrisRollins 你将如何在代码中实现它?
您的代码有效。只需在输入后立即按 ctrl-d(表示输入结束)即可退出。
【参考方案1】:
您的代码有效。只需在输入后立即按 ctrl-d(表示输入结束)即可退出。
其他几件事:
fgets()
不需要 size 减 1。根据手册:“fgets()
最多读取小于 size 个字符...”
实际上没有必要复制/反转整个字符串并进行比较,一半就足够了,或者您可以简单地从开始到结束进行比较,直到中心,而不需要复制。
strlen()
“遍历”字符串 - 您可以重复使用它的结果而不是再次调用。
.
#include <stdio.h>
#include <string.h>
#define MAXLEN 100
int isPalindrome(char *str, size_t len)
char *end = str + len - 1;
while (end > str)
if (*end-- != *str++) return 0;
return 1;
int main(int argc, char **argv)
char str[MAXLEN];
while (fgets(str, sizeof(str), stdin) != NULL)
size_t len = strlen(str) - 1;
str[len] = 0; // the last character is the newline. Replace with null char
printf("%s is %sa palindrome\n", str, isPalindrome(str, len) ? "" : "not ");
return 0;
【讨论】:
以上是关于如果没有输入,如何退出代码?代码示例:检查字符串是不是为回文? (在 C 编程语言中)的主要内容,如果未能解决你的问题,请参考以下文章
Python练习题9(密码判断):请写一个密码安全性检查的代码代码: 首先判断密码的强度,如果结果是低或中则打印如何提升密码安全级别的提示,而高则直接退出