我是一個C++新手,我試圖把實踐中的指針與字符串。我所做的程序只是將用戶類型的字符串存儲在命令行中。但我得到段錯誤,不知道爲什麼。使用字符串指針的分段錯誤
這是代碼:
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
//This code is meant to learn how to use pointers and strings
//Ask the user for who are they in the family and save it in string array!
void print_string (string* Value, int const nSize);
int get_names(string* Family_input);
int main (int nNumberofArgs, char* pszArgs[])
{
cout << "Tis program stores your family members\n";
cout<< "Type the names and write 0 to exit\n";
string familia_string;
string* familia = &familia_string;
int family_number;
family_number=get_names(familia);
cout << "The family members are: ";
print_string(familia, family_number);
cout << endl;
return 0;
}
int get_names(string* Family_input)
{
int i=0;
string input="";
string old_input="";
while (input!="0")
{
cout << "type " << i <<" member\n";
//cin >> *(Family_input+i);
//input=*(Family_input+i);
cin >> input;
*(Family_input + old_input.length()) = input;
old_input=input;
i++;
}
return i;
}
void print_string (string* Value, int const nSize)
{// I don't want to &psValue to be changed!
for (int i=0; i<nSize; i++)
{
cout << *(Value+i) << " ";
//&psValue++;
}
}
我不知道這是否是因爲我不接受字符串的正確尺寸,或者我沒有使用正確的指針或者是我有在使用偏移量之前分配內存。
顯示代碼在這裏(最小但完整的例子),而不是在外部網站上。另外,C和C++不是同一種語言,一箇中的「自然」解決方案可能無法在另一箇中工作(所以只能標記正在編寫/編譯的語言)。 – crashmstr 2014-09-12 16:34:23
「*(Family_input + old_input.length())= input'背後的想法是什麼? – NPE 2014-09-12 16:34:44
[GDB](http://www.gnu.org/software/gdb/)和IDE調試器是你的朋友。瞭解如何使用它們,您將能夠搜索導致段錯誤的確切線路。 – skrrgwasme 2014-09-12 16:35:37