C言語While/FOr循環コード行数最適化(Cプログラム設計、練習問題7.18ノート)
2256 ワード
例えば次のコードは、
次の行に簡略化できます.
例えばWhileループ:
1行に簡略化することもできます.
いくつかの簡略化例:
int i;
for(i=0;form[i]!='\0';i++)
{
to[i]=form[i];
}
to[i]='\0';
次の行に簡略化できます.
for(;(*to++=*form++););
例えばWhileループ:
while(*form!='\0')
{
*to++=*form++;
}
*to='\0';
1行に簡略化することもできます.
while((*to++=*form++));
いくつかの簡略化例:
#include
int main()
{
char *a="I am a student."; // a , , b
char b[]="You are a stydent.";
char *p=&b;
printf("string a:%s
string b:%s
",a,b);
// copy_string(a,p);
// copy_string_1(a,p);
// copy_string_2(a,p);
// copy_string_3(a,p);
// copy_string_4(a,p);
// copy_string_5(a,p);
// copy_string_6(a,p);
copy_string_7(a,p);
printf("string a:%s
string b:%s
",a,p); // , ,
return 0;
}
void copy_string(char *form,char to[]) // , , ,
{
int i; // to , ,
for(i=0;form[i]!='\0';i++) // , form[], []
{
to[i]=form[i];
}
to[i]='\0';
}
void copy_string_1(char *form,char *to)
{
while((*to=*form)!=0) // while
{
to++;
form++;
}
}
void copy_string_2(char *form,char *to)
{
while((*to++=*form++)!='\0'); //
}
void copy_string_3(char *form,char *to)
{
while(*form!='\0')
{
*to++=*form++;
}
*to='\0';
}
void copy_string_4(char *form,char *to)
{
while(*form) // "\0" ASSII =0, "!='\0'"
{
*to++=*form++;
}
*to='\0';
}
void copy_string_5(char *form,char *to)
{
while((*to++=*form++)); // 2 4, While , "!='\0'"
}
void copy_string_6(char *form,char *to)
{
for(;(*to++=*form++)!='\0';);
}
void copy_string_7(char form[],char to[])
{
char *p1,*p2; // , ,
p1=form;
p2=to;
while(*to++=*form++);
}