扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在C#中让一个函数返回多个值有两种方法可以实现:
创新互联公司自2013年起,是专业互联网技术服务公司,拥有项目成都网站设计、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元临汾做网站,已为上家服务,为临汾各地企业和个人服务,联系电话:18982081108
第一种是使用指针变量声明函数(或者使用数组变量)第二种是使用传出参数
第一种方法:函数返回的是一个指针地址(数组地址),这个内存地址有多个变量寄存在里面。这个方法我不太会用,传地址传值我常常搞的淅沥糊涂。
第二种方法:我用例子说明。
首先声名一个函数,定义如下
public bool CheckName(string UserName, out string PassWord, Out int State)
{
if ( UserName == "890" )
{
PassWord = "232"; State = 0;
}
else
{
PassWord = ""; State = 1;
}
return false;
}
应用方法如下:
string PassWord = "";
int State = 0;
string UserName = "abc";
bool falg = CheckName(UserName,out PassWord, out State);
这个就可以得到函数CheckUser返回的三个值falg 、PassWord、State在使用out型参数的时候必须事先声明,否则无法使用,可以看作输出参数的初始化。
flag不是c语言的关键字,其通常用来作为一个指示变化的变量的名称,C语言中一般设置一个变量flag,是一个来表示判断的变量,当做标志。
例如当一种情况的时候,置flag为1,当另外一种情况时,置flag为2。 变量名为flag,只是习惯问题,也可以取别的名字。
例:设置标志,如:A事件和B事件
A事件正在发生 flag=1,
A事件没有发生 flag=0;
B检测flag,如果flag=1,说明A正在执行,B就不执行
B检测flag,如果flag=0,说明A没有执行,B就执行
常用于同时访问共享内存,或者同一块儿变量,互斥。
扩展资料:
Flag只有1(立起)和0(倒下)两个数值,通常集中存放在内存中固定的区域里。程序在某种状态改变的同时改变flag的值,并在其他操作中通过flag了解状态,并决定接下来的操作。换句话说,flag可以用来帮助程序做复杂条件的判断。
Flag的这一特性在游戏中被广泛应用。几乎所有有剧情的游戏中,有选项的,选项影响剧情的游戏,都有Flag变量的运用,都可以说是有Flag,立Flag,比如《金庸群侠传》《仙剑奇侠传》《寂静岭》《美国末日》等。
注:FLAG在所有计算机编程中几乎都有重要作用,比如:系统编程,网络编程,软件编程,数控编程等等,在与计算机相关的生产生活中多有运用,而不止运用在游戏编程方面。
素数,就是质数。就是说这个数只能被1和它自己整除。
从11开始,首先flag初值为1,然后从2开始,一直递加到10,如果期间有数能把11整除,那么就将flag赋值为0,表示这个数不是素数。最后,根据falg的值,如果flag为1,则表示这是个素数,打印出来,如果为0,表示不是,那么开始计算12。依次,一直到100.
#includestdio.h
#includeconio.h
#includestring.h
#includestdlib.h
void Substitute(char *pInput, char *pOutput, char *pSrc, char *pDst)
{
char *pi, *po, *p;
int nSrcLen, nDstLen, nLen;
// 指向输入字符串的游动指针.
pi = pInput;
// 指向输出字符串的游动指针.
po = pOutput;
// 计算被替换串和替换串的长度.
nSrcLen = strlen(pSrc);
nDstLen = strlen(pDst);
// 查找pi指向字符串中第一次出现替换串的位置,并返回指针(找不到则返回null).
p = strstr(pi, pSrc);
if(p)
{
// 找到.
while(p)
{
//计算被替换串前边字符串的长度.
nLen = (int)(p - pi);
// 复制到输出字符串.
memcpy(po, pi, nLen);
memcpy(po + nLen, pDst, nDstLen);
// 跳过被替换串.
pi = p + nSrcLen;
// 调整指向输出串的指针位置.
po = po + nLen + nDstLen;
// 继续查找.
p = strstr(pi, pSrc);
}
// 复制剩余字符串.
strcpy(po, pi);
}
else
{
// 没有找到则原样复制.
strcpy(po, pi);
}
}
int main(int ac, char *av[])
{
if (ac!=5) {
printf("程序名 要操作的文件 新文件 查找的字符串 替换的字符串\n");
printf("示例:test.exe 1.txt 2.txt hello love\n");
return 0;
}
const int MAXSIZES = 100;
FILE *fpSrc,*fpDes;
char filename1[20]="1.txt";
char filename2[20]="2.txt";
//要求查找的字符串,替换的字符串;
char ps[]="hello";
char pd[]="love";
//求取所查找和替换的字符串的长度;
int len_src=strlen(av[3]);
int len_des=strlen(av[4]);
//定义存储字符串缓冲区;很奇怪的一点是,fgets函数不能将字符串写入动态分配的内存中
/*char* Src_buf=(char*)(sizeof(char)*MAXSIZES);
char* Cpy_buf=(char*)(sizeof(char)*MAXSIZES);
char* Des_buf=(char*)(sizeof(char)*MAXSIZES);*/
char Src_buf[MAXSIZES] = {0};
char Cpy_buf[MAXSIZES] = {0};
char Des_buf[MAXSIZES] = {0};
//打开文件
if((fpSrc=fopen(av[1],"r+"))==NULL)
{
printf("fail to open the file1 !\n");
exit(1);
}
if((fpDes=fopen(av[2],"a+"))==NULL)
{
printf("fail to open the file2 !\n");
exit(1);
}
//进行循环读取
while(!feof(fpSrc))//判断文件是否已结束;!feof(fpSrc)
{
fgets(Src_buf,MAXSIZES,fpSrc);
Substitute(Src_buf,Des_buf,av[3],av[4]);
fputs(Des_buf,fpDes);
printf("%s",Des_buf);
}
fclose(fpSrc);
fclose(fpDes);
system("pause");
return 0;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流