我對編程世界相當陌生,所以請原諒我,如果這是一個常見的錯誤。sscanf()double&string
我試圖從一個輸入字符串中掃描3個double值和3個字符串,但它不會在第二個值後繼續。
double total_weight_kg(char *s, int Length) {
double weights[3];
char units[3];
int test = sscanf(s, "%lf, %s, %lf, %s, %lf, %s",
&weights[0], &units[0],
&weights[1], &units[1],
&weights[2], &units[2]);
printf("%i\n", test);
printf("%s\n", &units[0]);
int main(void) {
total_weight_kg("5, g, 1, t, 175, kg", 3);
return 0;
第一個打印輸出2和第二個g。
此外我想比較單位[我]在一個循環,但似乎無法得到那個工作。
for (int i = 0; i < Length; i++) {
w = weights[i];
if (strcmp(units[i], "kg") == 0) {
weight += w;
}
}
我希望你能幫助我找到這個問題的解決方案,
編輯:Everyting正在工作,現在打算。非常感謝您的幫助。 (19 [^,]是一個大問題)
的'scanf'格式' 「%S」'是用於讀取空終止字符串。你的數組'units'是一個由三個單獨的'char'元素組成的數組,而不是字符串。編譯器應該一直對你發出警告(對於這個和對'strcmp'調用)。 –
'char units [3];'不會持有g和kg。你在這裏有緩衝區溢出。例如,你必須創建一個char []數組,例如'char units [3] [10]'。 –
我們原諒你:C字符串是地獄。 –