在循环外再次写入c值的原因是什么?多个c值如何存储在一个管道中? printf(“输入任何字母或数字[键入;结束]:”; 做{ scanf(“%c”、&c); 如果(c>='0'&&c='a'&&c='a'&&c

在循环外再次写入c值的原因是什么?多个c值如何存储在一个管道中? printf(“输入任何字母或数字[键入;结束]:”; 做{ scanf(“%c”、&c); 如果(c>='0'&&c='a'&&c='a'&&c,c,C,c的值已经写入循环中的管道 printf("Enter any alphabetical character or digit [type ; to end]:"); do{ scanf("%c",&c); if(c>='0' && c<='9') write(RD[1],&c,1); if((c>='a' && c<='z') ||

c的值已经写入循环中的管道

printf("Enter any alphabetical character or digit [type ; to end]:");
do{ 
    scanf("%c",&c);
    if(c>='0' && c<='9')
             write(RD[1],&c,1);
    if((c>='a' && c<='z') || (c>='A' && c<='Z') )
             write(RA[1],&c,1);
}while(c!=';');

write(RD[1],&c,1);
write(RA[1],&c,1);
不,不是

c
时,循环中的条件为false,因此不会在循环中写入任何内容

printf("Enter any alphabetical character or digit [type ; to end]:");
do{ 
    scanf("%c",&c);
    if(c>='0' && c<='9')
             write(RD[1],&c,1);
    if((c>='a' && c<='z') || (c>='A' && c<='Z') )
             write(RA[1],&c,1);
}while(c!=';');

write(RD[1],&c,1);
write(RA[1],&c,1);

c=';'-->c>='0'&&c(c>='a'&&c='a'&&c当c为“;”时循环中断。在这种情况下,它不会写入管道。读取器预期的是结尾“;”,因此它会在循环之后写入两个管道。

可能读取它们的任何东西都希望有一个尾部
printf("Enter any alphabetical character or digit [type ; to end]:");
do{ 
    scanf("%c",&c);
    if(c>='0' && c<='9')
             write(RD[1],&c,1);
    if((c>='a' && c<='z') || (c>='A' && c<='Z') )
             write(RA[1],&c,1);
}while(c!=';');

write(RD[1],&c,1);
write(RA[1],&c,1);