Получить отдельные элементы из массива?

#c

#c

Вопрос:

Я пытаюсь распечатать каждый char из них в s массиве по одному. Программа, которую я напечатал, все буквы после определенного индекса в массиве.

Проблема, с которой я сталкиваюсь, заключается в том, что после этого пользователь вставляет фразу, после чего она выделяется. Как вы вызываете буквы из строки, используя указатели?

Можете ли вы использовать strtok для разделения этой строки, я попытался установить значение delim «», но не получил результата. Другими словами, сделайте это списком, как в Python split() .

 #include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>


int main() {
        
    char *s;
    s = malloc(1024 * sizeof(char));
    scanf("%[^n]", s);
    s = realloc(s, strlen(s)   1);
   
    //printf("%s n", s);
        
    for (int i = 0 ; i <strlen(s); i  ){
        printf("%s n", amp;s[i]);        
    }
        
    return 0;
}
 

Комментарии:

1. Почему вы используете %s для печати один символ?

2. for (int i = 0; s[i] != ''; i ) printf("%cn", s[i]); ?

3. что я должен использовать, %ch ?

4. Вы должны использовать %c

5. И использовать s[i] , не amp;s[i]

Ответ №1:

 printf("%cn", s[i]);
 

или

 printf("%cn", *(s   i));
 

Комментарии:

1. можете ли вы объяснить второе printf утверждение, почему вы написали *(s i)

2. Потому что s[i] = *(s i)

3. Они эквивалентны. S имеет адрес первого элемента массива, вы суммируете i позиций с этим, а затем получаете доступ к значению, которое было сохранено в этой позиции.

Ответ №2:

 len = strlen(s);

for (int i = 0 ; i < len; i  ){
    printf("%cn", s[i]);        
}
 

Ответ №3:

 int main() 
{
    char *s;
    s = malloc(1024 * sizeof(char));
    scanf("%[^n]", s);
    s = realloc(s, strlen(s)   1);
    for (int i = 0; s[i] != ''; i  )
    {
        printf("%c n", s[i]);
    }
    return 0;
}