文字列に数値をかける単純なcコードを書いていたので、私には分かりません。このコードでは:数値を文字列に変換する
void itos(int a,char *p){
int pom = a;
do{
p++;
pom/=10;
}while(pom);
*p = '\0';
do{
pom = a%10 + '0';
*--p = pom;
a/=10;
}while(a);
}
私はセグメンテーションフォールトを取得し続けていますが、なぜ私は理解できません。文字列はアドレスによって渡されるので、メインからの文字列には関数内の文字列へのアクセスがあってはいけませんか?一方、このコードはpefectly作品:
char *itos(int a,char *p){
int pom = a;
do{
p++;
pom/=10;
}while(pom);
*p = '\0';
do{
pom = a%10 + '0';
*--p = pom;
a/=10;
}while(a);
return p;
}
Somoneのは私にdiffrence(特に、なぜ最初のものが動作していない)を説明することができれば、私はextremlly GREATFULだろう。
2つの値は戻り値が異なるだけでなく、この関数を呼び出すコードも投稿してください。 – fluter
既に答えがあります。ポインターはcorectlyで初期化されませんでした。助けてくれてありがとう! – sale