在C中制作金字塔
我必须使用C,而不是C ++制作金字塔。 我要做的就是这个,我有一个字符串“这是一个字符串”(是的,空间假设在那里),我必须从两边“删除”一个字母,并打印出来。 像这样
"this is a string " "his is a string" "is a strin" "sa stri" " a str"
重复此过程,直到没有更多字符。 我的老师说要使用子串,C中有没有说过的东西
从位置打印(索引0到索引x)
从位置打印(索引1到索引x-1)
我知道我必须使用for
循环。
这是家庭作业,所以我会让你开始。
#include #include int main(void) { char src[] = "this is a test string"; char dest[5] = {0}; // 4 chars + terminator for (int i = 0; i * 4 < strlen(src); i++) { strncpy(dest, src+(i*4), 4); puts(dest); } }
输出:
this is a te st s trin g
因此,对于您的金字塔问题,您将需要获取原始字符串的子字符串。 将子字符串的开头设置为原始字符串前面的一个字符,将strlen(original) - 1
为结束字符。 然后循环该过程。
是的,有一个打印设施,使您可以打印子串。 阅读printf
的规范。
有一种方法可以给它一个参数(int)来限制它打印的另一个参数(char *)中的字符数。
要删除字符串的第一个字符,只需将下一个字符视为字符串的开头即可。 所以,而不是puts(str)
,调用puts(str + 1)
。
要删除字符串的最后一个字符,请使用\0
字符覆盖最后一个字符。 由于这是一种破坏性操作,因此操作原始字符串的副本可能是个好主意。
要解决此问题,请复制该字符串。 保持两个指针:一个在复制的字符串的前面走向末端,一个在末端走向前面。