我正在嘗試使用「strtok」將用戶輸入分爲4個部分。所以一個例子字符串看起來像「約翰1.3 2.4 3」。strtok分割錯誤並存入變量?
我想存儲第一個字符數組,第二個和第三個作爲浮點變量,最後一個作爲整數。
起初我嘗試使用scanf並將變量存儲到所需的位置。 我被告知使用fgets和分割字符串更好。我的代碼如下所示:
char Input[4];
char names[5];
struct numbers
{
float start;
float end;
int rows;
}values;
fgets(Input, sizeof(Input), stdin);
token = strtok(Input, " ");
strcpy(names, token);
values.start = atof(strtok(NULL, " "));
values.end = atof(strtok(NULL, " "));
values.rows= atoi(strtok(NULL, " "));
輸入用戶輸入後出現分段錯誤。 我該如何解決這個問題? 只使用scanf會更好嗎?
您必須放大輸入數組的大小。它只能保存4個字符。如果輸入的格式與您所描述的格式相同,則輸入的字符串將不適合。 –
您是否可以複製粘貼您嘗試的實際代碼?你的結構定義是錯誤的。 –
@MananVora它不是你的結構的成員,因爲它不在你的結構中。看起來像你的結構定義 - 它有兩個'結束' –