c语言 - 输出字符串包含乱码

问题

这段时间遇到过两次这种情况了,一次是输出int类型数组出现乱码,一次是输出字符串出现乱码:
在这里插入图片描述

解决

对于上述问题或者类似问题只需要:
方法一:
memset 函数用于将指定内存块的每个字节设置为指定值。它的函数原型如下:

void *memset(void *ptr, int value, size_t num);

它接受三个参数:

ptr:要设置值的内存块的起始地址。
value:要设置的值,即要用来填充内存块的字节。注意,value 参数的类型是 int,但实际上只使用了其最低有效字节(即 value 的低8位)。
num:要设置的字节数,即要设置值的内存块的大小。
memset 函数返回一个指向内存块起始地址的指针。
字符串使用前请使用清空语句把垃圾内存清理成’\0’,也就是0x00(0):

memset(str2, 0x00, sizeof(str2));

实例:
本来逆序输出数组ch包含一部分乱码,但是在操作这个数组前先加入这个函数清空一下内存就好了:

#include<stdio.h>
#include<string.h>
#define MAXLENTH 100
int main(){
	char ch[MAXLENTH];
	int n;
	int i;
	memset(ch, 0x00, sizeof(ch));//在使用前清空数组ch内存
	printf("请输入一个字符串\n");
	scanf("%s",ch);
	printf("这个字符串为:%s\n",ch);
	n = sizeof(ch) / sizeof(char);
	printf("这个字符串倒序为:\n");
	for(i=n-1;i>=0;i--){
		putchar(ch[i]);
	}
	printf("\n");
	return 0;
}

输入:abcde
输出:

请输入一个字符串
abcde
这个字符串为:abcde
这个字符串倒序为:
edcba

方法二:
对数组进行初始化即可:
char ch[MAXLENTH] = {0};

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值