Мой код не работает. У меня проблема с циклом while - PullRequest
0 голосов
/ 04 июля 2019

Я хочу получить Ala. Я получаю A. Как это исправить?

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

void zad(char tab[]) {
    int i = 0;
    int size = strlen(tab);
    while(tab[i] != " ") {
        printf("%c", tab[i]);
        i++;
    }
}

int main() {
    char word[20] = "Ala ma kota";

   zad(word);

   return 0;
}

Ответы [ 2 ]

4 голосов
/ 04 июля 2019

массив символов и типы символов различаются в c, первый использует " в качестве разделителя, а второй использует '

Так попробуйте это:

    while(tab[i] != ' ') {

Что должно сработать для вашего примера.

Однако, чтобы заставить ваш код работать более широко для разных подстрок (кроме символа пробела) и для строк без пробела, вам также нужно использовать размер, например:

    while(i < size && tab[i] != ' ') {

чтобы убедиться, что вы не пытаетесь читать за пределы памяти, в которой находится ваша строка.

3 голосов
/ 04 июля 2019

Попробуйте это: while(tab[i] != ' ' && tab[i])

Используйте ' ' вместо " "

...