我剛接觸c並嘗試編寫一個控制檯應用程序,它從用戶的音樂項目中獲取拍號和BPM信息,並返回一個欄的長度秒。從一個字符串中取一個字符並將其轉換爲int c
我想用時間簽名的用戶輸入字符串(例如:「4/4」),隔離第一個字符(代表每個節拍數的數字),並將其轉換爲要使用的整數在計算中。
這兩種方法我嘗試
int beatsPerBar = timeSignature[0];
和
int beatsPerBar = atoi(timeSignature[0])
都返回相同的錯誤:「下標值既不是數組也不指針也不載體」。
如何正確更改此字符的變量類型?
編輯:
使用@ R-Sahu的建議。下面的代碼編譯並構建,沒有錯誤或警告。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char timeSignature[4];
int BPM;
printf("Enter the working time signature of your project:");
scanf("%s",&timeSignature[4]);
int beatsPerBar = timeSignature[0]-'1';
printf("Enter the beats per minute:");
scanf("%i",&BPM);
printf("%i\n", beatsPerBar);
return 0;
}
然而,當我測試的代碼與下面的值
timeSignature = "4/4"
BPM = 180
我得到一個導致-47
的整數(計算器檢查說,它應該返回45
)。
我在做什麼錯?顯然,我對編碼和用於表示字符值的整數的理解並不是它應該的地方。任何人都可以分享有關此主題的廣泛教程的鏈接?
他們「返回錯誤...」?不太可能。你的意思是你得到一個編譯器錯誤/警告。請提供[mcve]。 – Olaf
哦,你不能改變變量的類型(即使是動態類型的語言也不行)。 – Olaf
不要忘記像10/8這樣時髦的時間簽名。 – Bathsheba