字符串逆序(c语言)
错误代码
#include<stdio.h>
//字符串逆序
void reverse(char arr[], int n)
{
int j = 0;
//采用中间值法
//访问数组中第一个元素和最后一个元素
//交换他们的值,从而完成了字符串逆序
//所以这个需要临时变量
for (j = 0; j <= n / 2; j++)
{
char temp = arr[j];
arr[j] = arr[n - 1 - j];
arr[n - 1 - j] = temp;
}
//直接打印整个数组
printf("%s",arr);
}
int main()
{
char arr[10000];
int i = 0;
//直接输入整个数组
scanf("%s", arr);
int sz = 0;
//这个循环计算的是除了\0后这个数组元素的个数
while (arr[sz] != '\0')
{
sz++;
}
//函数调用
reverse(&arr, sz);
return 0;
}
//
运行结果
为什么呢
因为scanf在读取输入时,不能读取空白字符(空格,制表符,换行符),遇到这些就会停止读取
所以到i就停止读取了
知识引用:
gets函数和fgets函数的区别
正确代码
#include <stdio.h>
#include <string.h>
int main()
{
char str[10001];
//读取键盘中输入的字符,包括空格
//需要引头文件
fgets(str, 10001, stdin);
int len = strlen(str);
//因为fgets把\n读取了,所以需要去除\n的情况
if (str[len - 1] == '\n')
{
len--;
}
for (int i = 0; i < len / 2; i++)
{
// 利用中间值进行交换
char temp = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = temp;
}
//直接打印整个数组
printf("%s\n", str);
return 0;
}
程序运行