这就是我想要的:
声明一个大小为15的字符数组,以存储来自用户的字符(字符串输入)值。现在执行以下任务:
这是我的代码
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <iomanip>
using std::setw;
void mycopy(char array);
int main(){
//Using Loop to input an Array from user
char array[15];
int i;
cout << "Please Enter your 15 characters" << endl;
cout << "**************************************************" << endl;
for (i = 0; i < 15; i++)
{
cin >> array[i];
}
// output each array element's value
cout << "Please Enter your 15 characters" << endl;
cout << "**************************************************" << endl;
cout << "Element" << setw(13) << "Value" << endl;
for (int j = 0; j < 15; j++) {
cout << setw(7) << j << setw(13) << array[j] << endl;
}
mycopy(array[15]);
return 0;
}
void mycopy(char array[15]) {
char array1[15];
strncpy_s(array1, array, 15);
cout << "The output of the copied Array" << endl;
cout << "**************************************************" << endl;
cout << "Element" << setw(13) << "Value" << endl;
for (int j = 0; j < 15; j++) {
cout << setw(7) << j << setw(13) << array1[j] << endl;
}
}
上面的代码是将数组传递给函数Copy()并将第一个数组的值复制到第二个char数组,但由于传递了无效参数,代码会生成异常。正如我搜索了堆栈溢出但我没有找到任何可以解决我的问题的类似问题。提前谢谢。
答案 0 :(得分:2)
不要使用strncpy_s
,这是非标准的。相反,请使用原来的strncpy
。要使用它,您需要包含cstring
。
#include <cstring>
mycopy()
的原型和定义不同。您的原型需要char
,但您的定义需要char
数组。让它们都采取数组。以下三个中的任何一个都将起作用:
void mycopy(char* array);
void mycopy(char array[]);
void mycopy(char array[15]);
当你在mycopy()
中调用main()
时,你试图访问第15个索引处的数组并将该字符传递给该函数。这是错误的,因为第15个索引超出范围,因为该函数采用指向char
数组的指针,而不是char
。您只需将指针传递给数组即可。
mycopy(array);