It is hard to gauge if anyone is a fit for a particular field from the outside and from grades alone. A lot of people in CS (and other fields) struggle initially with very mediocre grades or some failed courses but go on to be outstanding later on in their studies (perhaps concentrating on a narrow sub-field), some get PhDs although they only barely got their Bachelor's.
However, there are different directions you can take with CS that require different basic abilities which may be relatively easily learnable background knowledge or talents hard to acquire later in live. If you lack those abilities, you either need to work harder than others to make it in the respective field or you need to look for some other field (or some niché sub-field that caters to your abilities).
At many universities, you get thrown a mix of all those facets at you in the beginning. Thus, if you're only good in some areas your average grades will reflect that. Also pre-existing knowledge varies highly among students at the beginning and typically levels out later. One important thing you should do during the time until you get your Bachelor's degree is figure out which areas fit for you and which don't, so you can focus on the right ones in your Master's or when looking for a job.
One basic distinction is theory and practical applications. If you love math and theoretical logic, but cannot deal with technical problems, you may be bad at the latter and excel at theoretical CS. Similarly, if you love to write a program, but you don't care much about complex theories on how compilers and programming languages work, you are more on the application side. However, in each of these main areas there is a ton of different sub-fields that require different abilities. Are you into finding the right tools for the job and want to know them all or are you into working with data and finding the right algorithm to efficiently process huge chunks of data? Or do love concurrency problems and parellization? Or hardware tinkering? Or do you look more at the endresult, love to discuss variations of how to do a UI and how to do team-cooperation? Or something else entirely?
In essence, grades are only a rough indicator how you broadly do. You need to figure out what it is you actually love about the field and what abilities you have - and then go for a direction that brings both somewhat together. I would think about going for something else if you cannot find such a combination rather than if your general grades aren't top-notch, especially at the Bachelor level.
Determination can make a huge difference. If you love what you do and you can produce at least acceptable results, I'd always say go for it. You may not become the best in your field (or it may be a hard walk or maybe it turns out easy once you made the hill in front of you), but either way, you can still have a more satisfying life than if you do something you don't enjoy and are not much better at. Just try to get a feeling for what you can and cannot do and be always open about it. Still, sometimes we also have to admit that something isn't the right thing for us. That decision however, no one can make for you, in particular not with the limited rough information on such a forum.