重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
函数参数有传值和传址两种,你只要把数组的首地址传过去就可以了,函数参数是个指针,接收数组首地址,就可以在子函数中用指针调用数组中的数据。
创新互联建站专注于网站建设,为客户提供网站设计、成都网站建设、网页设计开发服务,多年建网站服务经验,各类网站都可以开发,品牌网站建设,公司官网,公司展示网站,网站设计,建网站费用,建网站多少钱,价格优惠,收费合理。
改成
void get_data(char str_num,int str_size)//在主程序中定义好数组,
//把数组的首地址当参数传过来给函数或者子过程,
//int str_size是该数组的长度,因为传过来时,只传了个首地址,
//如果不带长度,特别是在函数中要控制数组的长度时,就没有办法了。
//如果写程序时,已经知道是特定长度的了,那么可以在参数中不带数组长度。
{
usigend char str_num[10];
str_num[0]=0x01;
str_num[1]=0x02;
...
}
#include stdio.h
#include stdlib.h
void process_data( char * data)
{
//处理数据
}
int main()
{
FILE * fp;
char read_buffer[1024];
fp = fopen( "read.txt","r");//打开 read.txt文件,获取文件指针
while(!feof(fp)) {//判断是否到达文件末尾
fread(read_buffer, 1024, 1, fp);//读取1024字节, 遇到\n 就返回 也就是一行数据
process_data(read_bufffer);//将数据传人处理数据的函数中
}
fclose(fp);
return 0;
}
第一个参数b[0]是命令行直接调用程序的路径(可能是不完整的,例如只有文件名)。E:\C\j.EXE是LZ程序的完整路径。在命令提示符窗口中输入E:\C\j.EXE
(空格)加字符串,运行的j.EXE中b[0]为"E:\C\j.EXE"(考虑转义字符,在C语言中每个\写成\\),后面的字符串(用空格等空白符分隔)依次是b[0]、b[1]……如果参数中需要包含字符串,那么用引号加在该参数的两侧,否则这个参数会被当作多个参数传入程序。也可以命令提示符中cd
E:\C回车后进入j.EXE所在目录(如果盘符不是E:再输入E:回车),直接用j.EXE
(空格,.EXE可以省略)后面加参数的参数也可以,这样b[0]为"j.EXE"(.EXE省略时为"j"),其它不变。
简单的测试程序:
#include
stdio.h
#include
stdlib.h
int
main(int
a,
char*
b[])
{
int
i;
for(i
=
0;
i
a;
++i)
puts(b[i]);
system("pause");
return
0;
}
该程序输出所有命令行参数字符串,包括直接调用该程序的(完整的或不完整的)程序路径b[0]。
====
[原创回答团]