我的代码不起作用。我的while循环有问题

时间:2019-07-03 21:18:21

标签: c struct printf union

我想得到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 个答案:

答案 0 :(得分:4)

char数组和char类型在c中不同,第一个使用"作为分隔符,第二个使用'

所以尝试一下:

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

哪个适合您的示例。

但是,要使代码更普遍地适用于不同的子字符串(空格字符除外)以及其中没有空格的字符串,也需要使用大小,如下所示:

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

以确保您不会尝试读取字符串所驻留的内存之外的内容。

答案 1 :(得分:3)

尝试以下操作:while(tab[i] != ' ' && tab[i])

使用' '代替" "

相关问题