关于输出字符串出现“烫烫烫烫”的解决方法

这篇具有很好参考价值的文章主要介绍了关于输出字符串出现“烫烫烫烫”的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原因:

在查找资料后发现,是因为字符数组末尾没有加上'\0'结束标识,程序无法判断字符数组是否读完,然后输出了字符数组全部内存,即“烫烫烫烫烫烫”;

字符串后面烫烫,学习错误以及解决日志,算法,数据结构

一般使用字符串常量初始化字符数组会在末尾自动添加空值字符'\0',但在字符数组赋值,比如数组字符赋值给未初始化结构字符数组成员时,忽略末尾‘\0’,就可能会导致'烫'的出现。

如下代码块:

golf Golfa;
	int i;
	for (i = 0; i < Len; i++)
	{
		name[i] = cin.get();
		if (name[i]== '\n')
		{
			//name[i] = '\0'; 未修改末尾字符就会出错
			cout << "the enter end;\n";
			break;
		}
	}
    setgolf(Golfa,name, i+1);


//函数代码
void setgolf(golf& g, const char* name, int hc)
{
	for (int i = 0; i < hc; i++)
	{
		g.fullname[i] = name[i];
	}
}

解决方法:

1,在赋值给目标数组前,在赋值数组末尾添加‘\0’,(赋值时可能需要’\0‘的空间,要注意到下标);

for (i = 0; i < Len; i++)
	{
		name[i] = cin.get();
		if (name[i]== '\n')
		{
			name[i] = '\0';
			cout << "the enter end;\n";
			break;
		}
	}

2,在赋值后,给目标数组末尾额外添加上‘\0'以结尾。

void setgolf(golf& g, const char* name, int hc)
{
	for (int i = 0; i < hc; i++)
	{
		g.fullname[i] = name[i];
	}
    g.fullname[hc]='\0';
}

3,在创建结构时,在结构数组后添加“{}”花括号,表示已经初始化。

struct golf
{
	char fullname[Len] {};
	int handicap;
};

其中,方法三最简单,也最好理解,但在某些情况下并不适合。

//-----分割线-----//

      附:3/13号遇到的问题:

Person::Person(const std::string& ln,const char * fn)
{
	Iname = ln;
	sizeof(fn);
	int s;
	//s = sizeof(fn) < LIMIT ? sizeof(fn) : LIMIT;
	//for (int i = 0; i < s; i++)
	//	fname[i] = fn[i];
	int i = 0;;
	while (fn[i] != '\0')
		i++;
	if (i == 0)
	{
		std::cout << "Error.\nAnd set fname to NULL\n";
		fname[0] = '\0';
	}
	else {
		s = i < LIMIT-1 ? i : LIMIT;
		for (int i = 0; i < s; i++)
			fname[i] = fn[i];
		fname[s] = '\0';//注意结尾
		std::cout << "#测试#:sizeof是否包括\'\\0\' : " << fname[s-1] << std::endl;
	}
}

使用数组输入比较长度时,可以测试sizeof()显示长度时,是否包括了末尾字符‘\0’。

结论是,sizeof( ) 并不包括末尾字符。

以及,该代码块中也展示了,怎么得到char数组的长度,(如果直接使用指针,只会返回指针的地址的长度),还是需要利用'\0'来得到长度,结尾注意还要添加末尾字符。文章来源地址https://www.toymoban.com/news/detail-770503.html

到了这里,关于关于输出字符串出现“烫烫烫烫”的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell 拼接字符串,出现后面的字符串覆盖前面的字符串问题

    shell 拼接字符串语法很简单两个参数并排前后写上接口,如下 str1=www str2=bbb s t r 1 str1 s t r 1 str2 的结果未 wwwbbb 有时会出现如下问题: 在拼接字符串的时候,后面的字符串将前面的字符串覆盖了。 shell的内容如下: #!/bin/bash date_str=“ date +%Y%m%d ” echo $date_str python_file_name=\\\" 1

    2024年02月09日
    浏览(54)
  • 8086汇编:输入输出数字、字符、字符串功能

    前言:初学汇编,可能一时难以习惯这种任何事情都要“亲力亲为”的方式。就拿输入输出来说,高级语言一个函数就可以搞定的事情,在汇编中却不是那么容易的。下面简单介绍下8086汇编输入输出数字和字符串的问题。 调用21号中断的0ah和09h号功能,可以实现字符串的输入

    2023年04月25日
    浏览(50)
  • 统计字符串字符出现的次数

    输入一个字符串,输出字符及相应字符出现的次数。 【学习的细节是欢悦的历程】 Python 官网 :https://www.python.org/ Free :大咖免费“ 圣经 ”教程《 python 完全自学教程 》,不仅仅是基础那么简单…… 地址:https://lqpybook.readthedocs.io/   自学并不是什么神秘的东西 ,一个人一

    2024年02月07日
    浏览(78)
  • 算法-寻找字符串在给定字符串中出现的次数

    相信大家看完这篇字符串的操作一定让你觉得真简单,处理方式也很灵活,那么下来敲黑板了,请你认真看喔。 方法一 使用replace方法和contains方法 统计原字符串的长度,然后新建一个空的字符串,用来接收要统计的字符串在原字符串中替换为空串后的串,然后运用数学公式

    2024年01月21日
    浏览(38)
  • 字符串倒序输出

    近期面试有这样一个问题,给定一个字符串,将其倒序输出,这种问题乍一看很好处理,但是实际在写的时候不知道怎么写了,有思路,但是没写出来。记录一下。 字符串反转实现的方式有多种,本质思想是将两端的数据进行对调,这个需要关系到二分法。 计算字符串总长

    2024年01月19日
    浏览(40)
  • 字符串的输入输出

    2024年01月19日
    浏览(36)
  • C语言学习:输入一行字符串,输出字符串中最长的单词。

    输入一行字符,编写一个函数,将此字符串中最长的单词输出。 代码示例如下: 一、输出字符串中第一个最长单词 测试结果:  二、输出字符串中所有最长单词 评论区指出上述程序不能输出同样最长的两个单词,修改后该程序能输出所有最长单词,即如果有多个同样最长的

    2024年02月05日
    浏览(61)
  • C语言字符和字符串的输入与输出

    1、scanf函数输入单个字符 C语言scanf输入时缓冲区问题 scanf函数是标准输入流(从键盘接收数据),接收的数据放入输入缓冲区中,其中就包括在键盘输入的空格、回车这类字符,当你用%d接收时是不会影响的,但是用%c就会产生错误,这是因为在\\\"%c\\\"输入时,空格和转义字符均作

    2023年04月09日
    浏览(83)
  • 题目:1967.作为子字符串出现在单词中的字符串数组

    ​ 题目来源:         leetcode题目,网址:1967. 作为子字符串出现在单词中的字符串数目 - 力扣(LeetCode) 解题思路:         遍历字符串数组,根据 word.indexOf(pattern) 的返回值是否为 -1 判断改字符串是否为单词的字符串并对其计数即可。 解题代码: 总结:         官方

    2024年02月13日
    浏览(52)
  • C语言-字符串与输入输出

    在 C 语言中,字符串实际上是使用空字符 \\0 结尾的一维字符数组。因此,\\0 是用于标记字符串的结束。 空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。 比如:下面声明和初始化创建

    2024年02月02日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包