C言語While/FOr循環コード行数最適化(Cプログラム設計、練習問題7.18ノート)

2256 ワード

例えば次のコードは、
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++); }