文字列をdest
文字列にコピーしようとしています。私が次のプログラムをコンパイルすると:メモセットと文字
#include <stdio.h>
int main(void) {
char dest[6];
char source[6];
strcpy(dest,source);
while (*dest) { printf("%c",*dest++); }
while (*source) {printf("%c",*source++); }
return 0;
}
実行時エラーが発生します。私はそれがが出会いまでに出くわすまでコピーするからだと思う。しかし、null文字に遭遇せず、実行時エラーが発生するまでバッファーからのコピーを続けました。次のようにこの問題を解決するために、私は、コードを変更:
#include <stdio.h>
int main(void) {
char dest[6];
char source[6];
memset(dest, '\0', 6*sizeof(dest)); //trying to set dest to '/0'
strcpy(dest,source);
while (*dest) { printf("%c",*dest++); }
while (*source) {printf("%c",*source++); }
return 0;
}
は、私は、次のエラーを取得:
prog.c:11:38: error: lvalue required as increment operand
while (*dest) { printf("%c",*dest++); } ^
と
prog.c:11:38: error: lvalue required as increment operand
while (*dest) { printf("%c",*source++); } ^
これはなぜ起こるのでしょうか?
第1のプログラムは、第2のプログラムと同じ理由で(http://ideone.com/2Zy1hx)コンパイルできません。それがあなたが使っていたソースだと確信していますか? – templatetypedef
また、配列に++を適用することはできません。 :-) – templatetypedef
'dest'が配列の場合、' dest ++ 'は正当なCコードではありません。 – templatetypedef