Think what the variable i is used for.
i=number of 360 controllers connected, i has to be equal to or less than 4
Unless you have 5 controllers connected I suspect that the value of i must be less than 4 rather than less than or equal to 4.
What do you want to do with the data from the controllers, how is it stored and how is it accessed ? The getControllerData() function seems to collect the data but you are not telling it which controller to look at when it is called. The data seems to be stored in the controllerData structure but how does the program know which controller it relates to and how would you access it later ?
You could call the getControllerData() function with a parameter of i, the controller number but as far as I can see the data retrieved from controller i is not stored in a way that relates to that particular controller. One problem here is that most people will not have the same hardware and libraries as you which makes helping difficult. Do the libraries that you are using come with any example programs ?