system();
|
我以这个为测试为例:system("abcde"); 显示如下: 'abcde'不是内部或外部命令,也不是可运行的程序 或批处理文件。 Pressanykeytocontinue 这个很能说明问题:在windows操作系统下,system()函数真正调用的是命令解释器文件cmd.exe,这个我想你应该知道吧,通过解释器将传入的字符串转成相应的内部/外部命令或可运行程序以及批处理文件,就能解决你关于pause(内部指令)、clrscr(外部命令)的问题了。不过这里还有个小问题,我的中文XP下cmd似乎也是英文版本的,所以pause显示英文,而console程序显示的是中文,我个人理解是console程序与操作系统间有密切关系(可能存在语言的转译或内部调用一个中文的cmd),所以console程序结果与cmd结果在内容上有语言的区别。 |
改变窗口的字体颜色可用语句 system("color 2"); 此时执行程序后,会是绿色的字体。
|
strncpy()函数
C/C++中的strncpy()函数功能为将第source串的前n个字符拷贝到destination串,原型为:
char * strncpy ( char * destination, const char * source, size_t num );
各个参数的含义显而易见,其中返回值与destination相同。
这个函数会出现三种情况:
1、num<source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的前num个字符到destination串中(不会自动为destination串加上结尾的'\0'字符);
2、num=source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的全部字符到destination串中(包括source串结尾的'\0'字符);
3、num>source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的全部字符到destination串中(包括source串结尾的'\0'字符),并且在destination串的结尾继续加上'\0'字符,直到拷贝的字符总个数等于num为止。
[例]
设有如下声明,注意此时source串的长度为6(包含最后的'\0'字符):
char destination[] = "********************"; // destination串为: "********************0"
cosnt char *source = "-----"; // source串为: "-----0"
情形1:如果执行如下语句:
strncpy( destination, source, 5 );
那么destination的前5个字符将会被'-'替换,即(以'0'表示'\0'字符):
destination串为: "-----***************0"
情形2:如果执行如下语句:
strncpy( destination, source, 6 );
那么destination的前6个字符将会被source的前6个字符替换,即(以'0'表示'\0'字符):
destination串为: "-----0**************0"
情形3:如果执行如下语句:
strncpy( destination, source, 10 );
那么destination的前6个字符将会被source的前6个字符替换,并且会在后面补4个'\0',即(以'0'表示'\0'字符):
destination串为: "-----00000**********0"
参考:http://en.cppreference.com/w/cpp/string/byte/strncpy(例子不错)。。