です。function.cとmain.cというファイルがあります。 function.cではこの 機能関数内のポインタはアドレスを変更しますが、ポインタの外は0x0
int GetRow(int descriptor,char* src)
{
char app[1];
char* carattere= (char*)malloc(sizeof(char));
int count=0;
int capp=0;
while((capp=read(descriptor,app,sizeof(char)))>0
&&app[0]!=';')
{
if(app[0]!='\n')
{
carattere[count]=app[0];
carattere=(char*)realloc(carattere,sizeof(char)*(++count +1));
}
}
src=carattere;
if(capp<0)
{
return -1;
};
#define DEBUG
#ifdef DEBUG
printf("The line Detected was %s %s\n",carattere,src);
#endif
}
があると私はリターン同じ事新しいアドレスにSRCポイントかどうかを確認するためのprintfを使用する場合には、becouse働きます。 私はprintfのitprintヌルを使用する場合、私はGetRowを
char* pointer;
int file=open("prova.conf",O_RDWR);
GetRow(file,pointer);
printf("%s",pointer);
Becouseを呼び出すmain.cの中で生まれた問題。 gdbを使用してGetRowを呼び出すと、ポインタポイント0x0がわかります。だから誰も私の問題を伝えて説明できますか?ありがとう、私の英語のための私の言い訳。
['malloc()'と 'C 'のファミリの戻り値をキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/605845/2173917) –
これは多くの質問です。署名を 'int GetRow(int descriptor、char ** src)'に変更し、ポインタへのポインタを渡し、それに応じて残りのコードを変更します。 – dasblinkenlight
関数内の入力引数の値を変更しても、関数外のこの引数の値には影響しません。 –