2014-04-14 41 views
0

老師是否給了我們一個使用C++的任務,因爲我沒有尋求解決方案來完成整個程序,我只會詢問基於什麼即時消息掙扎的信息。創建三個數組以填充c風格的字符串

我的程序允許用戶選擇要打開的文件。要打開的文件將包含stateInitials,miles和numberOfShelters。每個人都有一個空間。

看起來像這樣

WV 4.0 3 NC 32.7 4 SC 43.2 10

我需要閱讀的第一stateInitials,把他們在自己的數組,然後把英里自己的數組和numberOfShelters在它自己的數組中。有16行相同的重複模式,所以stateInitials數組應該保持16並且與其他兩個數組相同。我不能使用矢量。我無法使用字符串。只能使用C STYLE STRINGS。我無法弄清楚如何創建一個包含16個c風格字符串的數組。現在我已經搜索了大約8個小時,唯一的解決方案超出了教師期望我們知道的內容。我們確實覆蓋了2維數組,我嘗試使用它們,但得到了糟糕的結果。我只需要一個解決方案來創建一個擁有c字符串的數組,並儘可能多地解釋所以我可以理解你的方法,謝謝。

+0

使用動態內存:'new'' new []''malloc'' realloc'。另外,C-Style字符串只是非零字符的數組,以0結尾。 – Deduplicator

回答

1
// have an array for each of the fields 
// stateInitials is two-dimensional as it stores many characters for each state 
const char stateInitials[Num_States][Max_State_Size]; 
int miles[Max_States]; 
int numberOfShelters[Max_States]; 

// work through the input a state at a time... 
for (int i = 0; i < Num_States; ++i) 
    // if you can't get a space-delimited state name, miles and numberOfShelters, fail 
    if (!(stream.getline(stateInitials[i], Max_State_Size, ' ') && 
      stream >> miles >> numberOfShelters) 
    { 
     std::cerr << "bad input for state # " << i + 1 << '\n'; 
     exit(EXIT_FAILURE); 
    } 

如果你被允許使用向量和字符串,這將是更乾淨。您需要事先創建一個ifstream(我假設它被稱爲「stream」),並創建最大數組邊界的常量。

0
char *stringArr[N] = new char*[N]; 
stringArray[x] = "hello"; 

這不是你要找的嗎?