问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言问题,关于字符串

发布网友 发布时间:2022-04-20 12:14

我来回答

3个回答

热心网友 时间:2022-04-20 13:43

话不多说,以下两种,你任选一个。有注释:
一、

#include <stdio.h>
#include <string.h> //程序目的:使输入的字符串按反序存放
int main(){
void upsidedown(char str[]);
char str[100];
gets(str);
upsidedown(str);
printf("%s",str);
return 0;
}

void upsidedown(char str[])
{
int i,i2;
char str1[100];
for(i=0;i<strlen(str);i++) //你只遍历原字符串的一半,要全部遍历。
{
str1[i] = str[strlen(str)-1-i];
}
str1[strlen(str)] = 0; //字符串要以NULL(实质就是0,亦是'\0')结尾
strcpy(str,str1);
}

二、

#include <stdio.h>
#include <string.h> //程序目的:使输入的字符串按反序存放
int main(){
void upsidedown(char str[]);
char str[100];
gets(str);
upsidedown(str);
printf("%s",str);
return 0;
}

void upsidedown(char str[])
{
int i,i2;
char str1[100];
for(i=0;i<strlen(str)/2;i++) //如果只遍历一半,那么要进行如下两部操作
{
str1[i] = str[strlen(str)-1-i]; //str1的前半部分
str1[strlen(str)-1-i] = str[i]; //str1的后半部分
}
str1[strlen(str)] = 0; //字符串要以NULL(实质就是0,亦是'\0')结尾
strcpy(str,str1);
}

为什么会有乱码这个问题:
1、在你的函数upsidedown中,程序运行的时候会在函数栈上给str1分配sizeof(char)*100这么大的内存,而这些内存中存放的东西,系统会给他初始化赋值。赋的什么值,要根据不同的编译器来定了,debug模式下,赋值为ccccccc,cc恰巧为中文的烫,出现输出“烫”就是这个原因。其他地方可能会输出一些更奇怪的东西。这点也要求程序员要养成良好的习惯,在写代码时,不管是全局的还是局部的变量,定义好的时候就赋初始值。比如char str1[100] = {0};

热心网友 时间:2022-04-20 15:01

#include <stdio.h>
#include <string.h> //程序目的:使输入的字符串按反序存放

void upsidedown(char str[]);

int main()
{
char str[100];
gets(str);
upsidedown(str);
puts(str);
return 0;
}
void upsidedown(char str[])
{
int i;
char str1[100];
for(i=0;i<(strlen(str));i++)
{
str1[i]=str[strlen(str)-1-i];
}
str1[i]='\0';
strcpy(str,str1);
}

为什么有乱码呢,是因为str1的空间为100,你只给str1前N位赋值,后面大于N小于100的空间系统就随机给字符了,而且你的N肯定是小于100的,所以我加了这一句str1[i]='\0';是说明str1到第i位已经结束了,这样系统就不会随机给值了。

热心网友 时间:2022-04-20 16:36

一个循环就解决了,你怎么写了那么一堆。。。追问初学。请问为什么会有乱码出现

追答#include
#include
#define N 10 //可通过改变N 的值来改变输入字符串的长度
char a[30];
int i;
void main()
{
void Reverse(); //函数声明
printf("请输入字符串:");
scanf("%s",&a[i]);
printf("反转后的字符串:");
Reverse(); //函数调用
}

void Reverse() //函数定义
{
for(i=N;i>=0;i--)
printf("%c ",a[i]);
printf("\n");
}

Reverse是反转

你试试这个,我看不懂你写的那个,所以我也不知道为什么有乱码

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网络宣传文案心碎,句句获赞! 关于朋友圈上万人点赞转发的说说 人生看的很透彻的经典句子 超现实超扎心的说说大全2019最新 心脏血管堵塞吃什么食物 投资理财有什么前景 pp理财什么情况 P2P理财行业的前景如何? 中国目前的财富管理现状是什么情况? 呼吸皮沙发寿命多久 “皮沙发的呼吸寿命” 呼吸皮沙发寿命多久 如果手机没有了浏览器怎样才能下载安卓软件 现在电子设备很多用眼频繁,吃什么对眼睛好? 红楼梦中的药方有哪些? 藏药灰蔸巴,功效是什么 请问进行过账号申诉的其聊天记录还可以找回吗? 说梦话是否可以用药物来防治 商务商会2020年公开 民间资本啥时候公开? 国家引进资本运作为什么不公开 大禁头木耳炒吃有什么效果? 资本运作什么时侯真相会露出水面 黑木耳吃了对眼睛有好处吗? 到了2020年资本运作会不会公开 请问,我一个亲人联系不上了,但电话能打通,就是没人接,上*局,*会帮助定手机的位置吗? 个体户8年没有注销地税怎么办? vivo查找手机定位手机丢失,打电话没人接,发信息不回,怎么查找手机位置找到手机_百度问一问 手机通了没人接如何怎么找知道人在哪里我? 平顶山香山寺明天开放吗 一楼反水责任谁负责 2021平顶山香山寺正常开放吗? 为什么wifi满格却不能用? 我想举报一个在微信骂我的人,但我没有他的,怎么办? 定期存单存5万元以上,到期了不带身份证只靠密码能取钱吗? 醒肉除了放盐还放什么? 请问玻璃钢接线盒是什么? 玻璃钢电缆桥架和玻璃钢电缆槽存在的差异 上海建筑工地是不是必须使用钢板电箱?玻璃钢制的电箱有没有明令淘汰? 什么钢材制造配电箱 配电箱如何预防防锈防腐 防水接线盒的防水接线盒的材料 白色大衣配什么色内搭 大家觉得空中金融理财的稳盈宝怎么样?请问有用过的吗? 投连险安联稳盈宝 支付宝安联稳盈宝 支付宝里的安联稳盈宝退保还手续费吗 稳盈宝这个可信吗? 大叶到手香能食用吗? 浴霸维修 维修浴霸 浴霸电机坏了该怎么维修