又要开始学习了吗? 2021-03-23 18:16 采纳率: 25%
浏览 62
已采纳

不知道为啥触发断点了

#include <iostream>
#include <cctype>
#include <string>
#include <fstream>

char* functionC(char* destination, const char* source)
{
	int k = 0;
	for (int i = 0; source[i] != '\0'; i++)
	{
		if (!isdigit(source[i])) //isDigit проверяет число ли
		{
			destination[k] = source[i];
			k++;
		}
	}
	destination[k] = '\0';
	return destination;
}

std::string functionString(const std::string& source)
{
	std::string destination = ""; //строка для вывода输出线,输出线
	for (int i = 0; i < source.size(); i++)
	{
		if (!isdigit(source[i]))
		{
			destination += source[i];
		}
	}
	return destination;
}


int main()
{

	std::ifstream infile;
	std::ofstream outfile;

	infile.open("infile.txt");
	outfile.open("outfile1.txt");

	if (infile.peek() == std::ifstream::traits_type::eof()) //проверка на пустой файл
	{
		outfile << "File is empty!\n";
		return 1;
	}

	int length; //длина строки长字符串
	infile >> length;
	while (!infile.eof())
	{
		length++; // учитываем символ \0考虑到符号
		if (infile.fail() || length <= 0)
		{
			outfile << "\n";
			return 1;
		}
		char* arrayC1 = new char[length];
		char* arrayC2 = new char[length];
		arrayC2[0] = '\0';
		infile.ignore(length, '\n');
		infile.get(arrayC1, length);
		for (int i = 0; i < length - 1; i++)
		{
			if (arrayC1[i] == '\0')
			{
				outfile << "Invalid string length\n";
				return 1;
			}
		}
		std::string str = arrayC1;
		outfile << "Source string\t\t\t\t" << str << '\n';
		outfile << "With C-style strings:\t" << functionC(arrayC2, arrayC1) << '\n';
		outfile << "Using the string class:\t" << functionString(str) << '\n';
		delete[] arrayC1;
		delete[] arrayC2;
		infile >> length;
	}
	infile.close();
	outfile.close();
	return 0;
}

if (!isdigit(source[i])) 这里触发了断点不知道为什么

  • 写回答

2条回答 默认 最新

  • 泡视界 2021-03-23 18:43
    关注

    你 arrayC1里面没有 ‘\0’,

    传到functionC里面,循环一直跑,i一直加,arrayC1指向的char数组会越界的吧。

    你在functionC里面加一个答应就知道错在哪一个字符了呀

    std::cout<<i<<": "<<source[i]<<std::endl;

     

    如果分析对了请采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题