是什么导致程序在我继续执行另一个功能之前停止
What is causing the program to stop before I can continue with another function?
我正在研究在此程序排序后使用的二进制搜索,并且我不确定在按字母顺序对字母进行排序后如何停止崩溃。
主.cpp
#include <iostream>
#include "ReadString.h"
#include "SortString.h"
#include "SearchString.h"
using namespace std;
int main()
{
int i;
int column = 500;
int row = 20;
char *inputsearch;
cout << "How many names will you enter? ";
cin >> row;
while (row > 20 || row < 0)
{
cout << "Error: Please do not enter more than 20 or less than 0: ";
cin >> row;
}
char **p = ReadString(row, column);
cout << "Printed: " << endl;
for (i = 0; i < row; i++)
{
cout << *(p + i) << endl;
}
StringSort(p, row);
cin >> inputsearch;
cout << inputsearch;
SearchString(p, inputsearch);
for (i = 0; i < row; i++)
delete[] p[i];
delete[] p;
return 0;
}
读取字符串.cpp
#include <iostream>
#include <cstring>
#include "ReadString.h"
using namespace std;
char **ReadString(int row, int column)
{
char **String = 0;
int i;
String = new char *[row];
int NumChars;
for (i = 0; i < row; i++)
String[i] = new char[column];
for (i = 0; i < row; i++)
{
cout << "Enter name " << i + 1 << ": ";
cin >> String[i];
NumChars = strlen(String[i]);
}
return String;
}
读取字符串.h
#ifndef READ_STRING_H
#define READ_STRING_H
char **ReadString(int, int);
#endif
排序字符串.cpp
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include "SortString.h"
using namespace std;
void StringSort(char **str, int row)
{
char t[20];
int i, j, k;
for (i = 1; i < row; i++)
{
for (j = 1; j < row; j++)
{
//compare each
if (strcmp(str[j - 1], str[j])>0)
{
strcpy(t, str[j - 1]);
strcpy(str[j - 1], str[j]);
strcpy(str[j], t);
}
}
}
cout << "Strings (Names) in alphabetical order : n";
for (i = 0; i < 5; i++)
{
cout << str[i] << "n";
}
getch();
}
SortString.h
#ifndef SORT_STRING_H
#define SORT_STRING_H
void StringSort(char **, int);
#endif
搜索字符串.cpp
#include <string.h>
#include "SearchString.h"
int SearchString(char **p, char *inputsearch)
{
int First;
int Middle;
int Last;
First = 0;
Last = strlen(*p) - 1;
do {
Middle = (First + Last) / 2;
if (inputsearch == p[Middle])
return Middle;
else
if (inputsearch > p[Middle])
First = Middle + 1;
else
Last = Middle - 1;
} while (First <= Last);
return -1;
}
SearchString.h
#ifndef Search_String_H
#define Search_String_H
int SearchString(char **, char *);
#endif
当你这样做时 cin>> 字符串[i];在 ReadString.cpp 中,您不确保输入长度加上空终止符的字符少于大小为"列"的数组所允许的字符数。如果您输入的内容包含的字符数超过列的宽度,则会损坏您的免费存储堆。
相关文章:
- 有没有办法C++将给定类的功能限制为仅另一个类(不使用继承,朋友)?
- 当一个功能完成另一个功能打开时,我该怎么办?
- 为什么我要尝试在一个if语句中调用两个fucntions,但是在第一个完成后它忽略了另一个功能?(C )
- 在C 中的另一个类中调用功能
- 如何在另一个名称空间内从另一个命名空间内明确专业化功能模板
- LLVM插入功能调用到另一个函数中
- 当指针作为指向另一个功能内部指针的指针传递时会发生什么
- 是什么导致程序在我继续执行另一个功能之前停止
- 如何制作新功能并将其传递到另一个功能
- C 将用户输入从一个函数到另一个功能,并使用Main(Newbie)显示
- 有没有办法将向量从辅助函数传递到C 中的另一个辅助功能
- 如何从另一个功能中修改的结构的炭指针成员中获取值
- 对函数的未定义引用,该功能是另一个类的成员
- 是否可以将一个类别的插槽或常规功能从一个类连接到另一个类的插槽或常规功能?(QT)
- 接受元组并返回另一个元组的功能
- 如何将功能和数据从一个涡轮C 程序访问到另一个涡轮增压程序
- C 初学者可以在另一个功能中调用功能
- 将C 本地字符串返回到另一个功能
- CMAKE:使用来自另一个目标的功能,而无需直接target_link_libraries
- 使用另一个功能在另一个函数的变量