程式設計基礎35 tips stdio.h標頭檔案下的全域性陣列問題
阿新 • • 發佈:2018-11-17
使用<stdio.h>,然後對程式進行c的執行時,
全域性變數中如果使用字串或者是二維字串,
便會出錯。
一,
例如:
#include<stdio.h> #include<string.h> const int max_n = 100; char str[max_n]; char str_arr[max_n][max_n]; int main() { gets_s(str); int len = strlen(str); int r = 0, h = 0; for (int i = 0; i < len; i++) { if (str[i] != ' ') { str_arr[r][h++] = str[i]; } else { str_arr[r][h] = '\0'; r++; h = 0; } } for (int i = r; i >= 0; i--) { printf("%s", str_arr[i]); if (i != 0) { printf(" "); } } return 0; }
會出錯。
二,
而此例不會出錯。
#include<stdio.h> #include<string.h> const int max_n = 100; int main() { char str[max_n]; char str_arr[max_n][max_n]; gets_s(str); int len = strlen(str); int r = 0, h = 0; for (int i = 0; i < len; i++) { if (str[i] != ' ') { str_arr[r][h++] = str[i]; } else { str_arr[r][h] = '\0'; r++; h = 0; } } for (int i = r; i >= 0; i--) { printf("%s", str_arr[i]); if (i != 0) { printf(" "); } } return 0; }