c语言输入字符串倒叙存储
时间: 2024-12-13 19:25:30 浏览: 8
在C语言中,如果你想要将用户输入的字符串逆序存储,你可以使用数组或者动态内存分配(如`malloc()`函数)来实现。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100]; // 假设最大长度为100
printf("请输入一个字符串: ");
fgets(str, sizeof(str), stdin); // 使用fgets读取字符串,包括换行符
// 去掉末尾的换行符
if (str[strlen(str) - 1] == '\n') {
str[strlen(str) - 1] = '\0';
}
int len = strlen(str);
char reversed[len + 1]; // 创建一个新的字符数组用于存储逆序后的字符串
// 从原始字符串的末尾开始,逐个复制字符到新数组的开头
for (int i = len - 1; i >= 0; i--) {
reversed[i] = str[i];
}
reversed[len] = '\0'; // 结束字符串
printf("逆序后的字符串是: %s\n", reversed);
return 0;
}
```
在这个程序中,我们首先获取用户输入,然后创建一个新的数组并从原字符串的末尾开始向前填充,直到所有字符都被复制。
相关问题
编写能够在linux中实现的简单c语言程序要求如下 从键盘输入一串字符串然后倒叙输出
在Linux环境中编写一个简单的C语言程序,可以实现这个需求。下面是一个示例程序,它会从用户那里获取输入的字符串,并将其倒序输出:
```c
#include <stdio.h>
#include <string.h>
int main() {
char input[100]; // 定义一个足够大的数组来存储输入的字符串
printf("请输入一个字符串:");
fgets(input, sizeof(input), stdin); // 使用fgets读取一行用户的输入
// 检查是否输入了换行符,如果有的话去掉
size_t len = strlen(input);
if (input[len - 1] == '\n') {
input[len - 1] = '\0'; // 去掉最后一个字符(换行符)
}
// 将字符串倒序
char reversed[len + 1];
for (size_t i = 0; i < len; i++) {
reversed[len - i - 1] = input[i];
}
reversed[len] = '\0';
printf("倒序后的字符串是:%s", reversed);
return 0;
}
```
当你运行这个程序并输入字符串后,按回车键,程序会显示你输入的字符串倒过来的结果。
c语言判断输入的一串字符是否为“回文”。所谓“回文”,是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。试编写相应程序。输入字符串长度不超过50。
好的,我已经了解您的要求。请看以下的C语言代码,可以实现判断是否为回文字符串:
```
#include <stdio.h>
#include <string.h>
int main()
{
char str[50], rev_str[50];
int len, i, j, flag = 1;
printf("请输入一个字符串:\n");
scanf("%s", str);
len = strlen(str);
for(i=0, j=len-1; i<len; i++, j--)
{
rev_str[i] = str[j];
}
rev_str[i] = '\0';
for(i=0; i<len; i++)
{
if(str[i] != rev_str[i])
{
flag = 0;
break;
}
}
if(flag == 1)
printf("%s 是回文字符串\n", str);
else
printf("%s 不是回文字符串\n", str);
return 0;
}
```
以上代码会读取用户输入的字符串,然后通过循环将该字符串倒叙存储在一个新的字符串变量中,最后通过循环判断该字符串与倒序存储的字符串是否相同来判断是否为回文字符串。如果是,就输出“是回文字符串”,否则输出“不是回文字符串”。希望我的回答对您有所帮助。
阅读全文