需要帮助在C中创建给出特定数量的函数\n

需要帮助在C中创建给出特定数量的函数\n,c,function,C,Function,这就是我的代码现在的样子: #include <stdio.h> void print_lines(int n); int main() { printf("%i", print_lines(7)); return 0; } void print_lines(int n) { int i; scanf("%i", &n); for (i = 1; n != 0; --1) printf("\n"); } #包括 无效打印行(

这就是我的代码现在的样子:

#include <stdio.h>

void print_lines(int n); 

int main() {
printf("%i", print_lines(7));
return 0;
}

void print_lines(int n) {
    int i;
    scanf("%i", &n);
    for (i = 1; n != 0; --1) 
        printf("\n");
}
#包括
无效打印行(int n);
int main(){
printf(“%i”,print_行(7));
返回0;
}
无效打印行(int n){
int i;
scanf(“%i”和“&n”);
对于(i=1;n!=0;--1)
printf(“\n”);
}
其目的是该函数打印出用户使用scan f函数输入的尽可能多的新行。 我做错了什么

以下是您的愿望:

#include <stdio.h>

void print_lines(int n); 

int main() {
print_lines(7);
return 0;
}

void print_lines(int n) {
    int i;
    for (i = n; i >= 1; --i) 
        printf("\n");
}
这将从作为第三个参数给出的20个字符的字符串中打印前7个字符。

以下是您想要的:

#include <stdio.h>

void print_lines(int n); 

int main() {
print_lines(7);
return 0;
}

void print_lines(int n) {
    int i;
    for (i = n; i >= 1; --i) 
        printf("\n");
}

这将从作为第三个参数给出的20个字符的字符串中打印出前7个字符。

我认为更好的实现方法是:

#include <stdio.h>

void print_lines(int n); 

int main() {
    /* take input here (how many lines etc) */
    print_lines(7));
    return 0;
}

void print_lines(int n) {
    int i;
    for (i = 0; i < n; ++i) 
        printf("\n");
}
#包括
无效打印行(int n);
int main(){
/*在此处输入(有多少行等)*/
打印行(7);
返回0;
}
无效打印行(int n){
int i;
对于(i=0;i
您希望在printf内部使用的变量如下:

#include <stdio.h>

void print_lines(int n); 

int main() {
    /* take input here (how many lines etc) */
    char* lines = print_lines(7);
    printf("%s", lines);
    free(lines) // <-- important
    return 0;
}

char* print_lines(int n) {
    int i;
    char* res = malloc(sizeof(char) * (n + 1)); // <-- important, for \0 termination
    for (i = 0; i < n; ++i) 
        res[i] = '\n';
    res[n] = '\0';
    return res;
}
#包括
无效打印行(int n);
int main(){
/*在此处输入(有多少行等)*/
字符*行=打印行(7);
printf(“%s”,行);

free(lines)/我认为更好地实现您想要实现的目标是:

#include <stdio.h>

void print_lines(int n); 

int main() {
    /* take input here (how many lines etc) */
    print_lines(7));
    return 0;
}

void print_lines(int n) {
    int i;
    for (i = 0; i < n; ++i) 
        printf("\n");
}
#包括
无效打印行(int n);
int main(){
/*在此处输入(有多少行等)*/
打印行(7);
返回0;
}
无效打印行(int n){
int i;
对于(i=0;i
您希望在printf内部使用的变量如下:

#include <stdio.h>

void print_lines(int n); 

int main() {
    /* take input here (how many lines etc) */
    char* lines = print_lines(7);
    printf("%s", lines);
    free(lines) // <-- important
    return 0;
}

char* print_lines(int n) {
    int i;
    char* res = malloc(sizeof(char) * (n + 1)); // <-- important, for \0 termination
    for (i = 0; i < n; ++i) 
        res[i] = '\n';
    res[n] = '\0';
    return res;
}
#包括
无效打印行(int n);
int main(){
/*在此处输入(有多少行等)*/
字符*行=打印行(7);
printf(“%s”,行);
空闲(行)/“当N变为0时,打印换行。”

当N变为0时,打印换行符



你能进一步澄清吗?我不能确切理解你在最后一行中的意思。是的,因此函数应该做的事情是打印出程序用户通过scanf函数输入的尽可能多的新行(\n)。因此,在这种情况下,主函数中应该有7行新行,你应该像这样调用函数:print_lines(7);不要将其作为参数传递给printf函数。此外,在print_line函数中的循环中--1应该是什么意思?此外,print_line函数中应该只是for循环,而不是scanf。类似于:for(i=0;i
printf(“%i”,print_line(7))的含义是什么;
当函数
print_line
不(并且不应该)返回任何内容?你到底想通过它实现什么?你能进一步澄清吗?我不能确切理解你在最后一行中的意思。是的,所以函数应该做的是打印出尽可能多的新行(\n)正如程序的用户通过scanf函数输入的那样。因此,在上面的情况下,主函数中应该有7行新的行,您应该像这样调用函数:print_lines(7);不要将其作为参数传递给printf函数。此外,在print_line函数中的循环中--1应该是什么意思?此外,print_line函数中应该只是for循环,而不是scanf。类似于:for(i=0;i
printf(“%i”,print_line(7))的含义是什么;
当函数
print_line
不(而且不应该)返回任何东西?你到底想通过它实现什么???为什么在打印行中使用scanf功能?@StoryTeller:我正在对OP提供的原始代码进行最细微的修改。还有很多其他改进的空间。我觉得
I>0
I>=1
更好。谢谢,我想我明白我的意思了我现在做错了。刚开始学习,所以我仍在努力。为什么在打印行中使用scanf功能?@StoryTeller:我正在对OP提供的原始代码进行最细微的修改。还有很多其他改进的空间。我觉得
I>0
I>=1
更好。谢谢,我想我明白我的意思了我现在做错了。刚开始学习,所以我仍在努力。还有一种方法是让OP通过缓冲区(以避免动态分配);以及可能传递一个
文件*
来概括
printf
。当然有很多变体。但目前看来,这些变体将占据OP足够长的时间。是您打开了讨论变体的大门:)当然,我喜欢展示许多其他选项。也许我也可以添加它们。这样可以保持文章的完整性。还有一种变体是让OP通过缓冲区(以避免动态分配);以及可能传递一个
文件*
来概括
printf
。当然有很多变体。但目前看来,这些变体将占据OP足够长的时间。是您打开了讨论变体的大门:)当然,我喜欢展示很多其他的选择。也许我也可以添加它们。这样可以保持文章的完整性。
void print_lines(int n)
{
    while (n --> 0) printf("\n");
}