次の2つのコードを見て、最初のコードが動作し、もう1つが動作しない理由を教えてください。なぜ簡単なchar *が機能しないのですか?
最初のコード(ワーキング):
#include <iostream>
#include <string.h>
using namespace std;
char* getCoordinates(char* AndroidID)
{//Access the database and get the South Latitude value
//This is here is dummy data for testing
const char* S = "27.19122859";
const char* N = "27.19245011";
const char* W = "31.17657602";
const char* E = "31.17657602";
char X[100]="";
strncat(X, "S", 1);
strncat(X, S, strlen(S));
strncat(X, "N", 1);
strncat(X, N, strlen(N));
strncat(X, "W", 1);
strncat(X, W, strlen(W));
strncat(X, "E", 1);
strncat(X, E, strlen(E));
char* Y = X;
cout<<Y;
return Y;
}
int main()
{
char* sda=NULL;
getCoordinates(sda);
return 0;
}
これは正しく私が
S27.19122859N27.19245011W31.17657602E31.17657602
しかしときを構成する文字列を出力します私は同じことをやろうとしますが、main()の戻り値をプリントアウトすると、ちょっと変わってきます 2番目のコード(動作していません)
の#include <iostream>
#include <string.h>
using namespace std;
char* getCoordinates(char* AndroidID)
{//Access the database and get the South Latitude value
//This is here is dummy data for testing
const char* S = "27.19122859";
const char* N = "27.19245011";
const char* W = "31.17657602";
const char* E = "31.17657602";
char X[100]="";
strncat(X, "S", 1);
strncat(X, S, strlen(S));
strncat(X, "N", 1);
strncat(X, N, strlen(N));
strncat(X, "W", 1);
strncat(X, W, strlen(W));
strncat(X, "E", 1);
strncat(X, E, strlen(E));
char* Y = X;
return Y;
}
int main()
{
char* sda=NULL;
char* T=getCoordinates(sda);
cout<<T;
return 0;
}
この出力:
S27。 N27.19245011W31.`%@ \╞G■■)
ここで問題は何ですか?
なぜstd :: stringを使用していないのですか? –
[コンパイラがこれを解決できた可能性があります](http://coliru.stacked-crooked.com/a/69795df051f4d148) – chris
ありがとうございました:) –