我希望你看看下面的兩個代碼,並告訴我爲什麼第一個工作,另一個不工作。爲什麼cout一個簡單的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()中的返回值有點奇怪 第二個代碼(不工作)
個#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
非常感謝你:) –