使用printf打印数组,字符之间有空格

时间:2017-11-28 14:51:53

标签: c arrays printf

这一个很简单,我有一个字符数组,我想要打印它,但我希望在数组的每个单独成员之间有一个空格,这是否可以与printf一起使用?或者我是否必须准备一个单独的功能?

示例:

SELECT h.hacker_id, h.name
FROM Submissions s
INNER JOIN Challenges c
    ON s.challenge_id = c.challenge_id 
INNER JOIN Difficulty d
    ON c.difficulty_level = d.difficulty_level
INNER JOIN Hackers h
    ON s.hacker_id = h.hacker_id 
WHERE d.score = s.score
GROUP BY h.hacker_id, h.name
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC, h.hacker_id;

输出:

char array[]="hello";
printf ("%s", array);

4 个答案:

答案 0 :(得分:2)

您也可以使用此方法来解决您的任务

 int main(){
    char array[]="hello";
    char *p=&array;
    while(*p) {
     printf("%c ",*p); 
       p++;
    }
    return 0;
}

<强>输出

h e l l o

答案 1 :(得分:2)

如果你知道数组的长度,那就让它为n

for(i=0;i<n;i++) printf("%c ",arr[i]);

注意在' '之后写入%c这样的空格。这确保在打印数组中的每个字符后都有一个空格(空格也将在最后一个元素之后)。 如果您不知道数组的长度,那么您可以使用while循环,条件是end为null的数组,只是在打印每个元素时在%c之后提供一个空格。

答案 2 :(得分:1)

因为你不想在最后一个角色后面留出额外的空格:

char *tmp = array;
if (*tmp) {
    putchar(*tmp++);
    while (*tmp) {
        putchar(' ');
        putchar(*tmp++);
    }
}

或者把它变成一个函数:

void put_with_spaces(const char *s, FILE *fp)
{
    if (!*s)
        return;
    fputc(*s++, fp);
    while (*s) {
        fputc(' ', fp);
        fputc(*s++, fp);
    }
}

答案 3 :(得分:0)

在我浏览此问题时,我想到了一个新的解决方案

for (int i = 0; i < n; i++) {
    printf("%*c", 1 + !!i, arr[i]);
}