Я нашел эту программу в режиме онлайн, которая претендует на разделение строки на формат «firstName/lastName». Я проверил, и она работает:Символьные указатели и строки
char *splitString(char* ptrS, char c){
while(*ptrS != c){
if(*ptrS == '\0'){
return NULL;
}
ptrS++;
}
return ptrS;
}
int main(){
char word[100];
char* firstName;
char* lastName;
printf("Please insert a word : ");
fgets(word, sizeof(word), stdin);
word[strlen(word)-1] = '\0';
firstName = word;
lastName = splitString(word, '/');
if(lastName == NULL){
printf("Error:/not found in string\n");
exit(-1);
}
*lastName = '\0';
lastName++;
printf("First name %s, Last name %s\n",firstName, lastName);
return(0);
}
Что я вижу здесь, однако, только один символ массива создается, а firstName
и lastName
указатели помещаются properly.Maybe это потому, что я немного запутался о связи между указателями и массивами, но у меня есть несколько вопросов по этой программе:
- Сколько строк - массивы char - создаются после выполнения программы?
- Являются ли указатели на символы, используемые в этой программе, такими же, как строки?
- Почему я могу использовать эти указатели символов, используемые в качестве строк в
printf
? Я могу использовать указатели символов как строки для каждой программы на C?
В качестве следствия, какова связь между указателями и массивами? Можно ли их использовать взаимозаменяемо?
Знаете ли вы определение строки в C? Лучше не задавать много вопросов вместе, и вам легко найти ответы на хотя бы некоторые из ваших вопросов, если вы немного поработаете. –