这一个很简单,我有一个字符数组,我想要打印它,但我希望在数组的每个单独成员之间有一个空格,这是否可以与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);
答案 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]);
}