嗨,我运行它时遇到了一些问题,它崩溃了,我必须强行关闭它,我在确定导致它的任何帮助时会遇到一些麻烦。
#include <stdio.h>
void myprint(char let, int num, int line)
{
int countL=0,countT=0,numb, lin;
char abc;
numb=num;
line=lin;
abc=let;
while(countL<lin)
{
while(countT<numb)
{
printf("%s",abc );
countT++;
}
printf("\n");
countL++;
}
}
int main(int argc, char const *argv[])
{
int times = 5, lines = 3;
char letter = 'a';
myprint(letter, times, lines);
return 0;
}
答案 0 :(得分:4)
麻烦的是你有一个字符,并试图将其打印成字符串:
printf("%s",abc );
在C字符串中是由空字符\0
终止的字符序列。因此,printf
将尝试继续打印字符,直到找到空字节为止。
您可能想要做的只是在printf
中指定一个角色:
printf("%c",abc );
另一个问题是你在赋值中反转了变量:
line=lin;
答案 1 :(得分:1)
lin
没有初始值。
我认为阅读line=lin;
的行应为lin=line
答案 2 :(得分:1)
尝试反转此初始化:
line=lin;
到
lin=line;
否则,lin
未定义。
答案 3 :(得分:1)
printf("%s",abc );
打印一个字符串,abc是一个字符。
答案 4 :(得分:1)
问题1:
变量“lin”没有正确初始化,
行=林;
所以变量“line”和“lin”包含垃圾值。
问题2:
更改
printf(“%s”,abc);
到
printf(“%c”,abc);
因为abc是一个字符。
答案 5 :(得分:0)
在while(countL<lin)
循环中,您永远不会重置countT
变量。
答案 6 :(得分:0)
尝试替换
while(countT<numb)
{
printf("%s",abc );
countT++;
}
与
while(countT<numb)
{
printf("%c",abc );
countT++;
}
答案 7 :(得分:0)
您错误地使用了printf
。
您传递了%s
作为格式,需要char*
作为参数,而不是char
。
答案 8 :(得分:0)
您的代码中的错误很简单
“line = lin”是代码的问题
这里变量lin没有初始化,因此保存垃圾值
这个垃圾值传递给变量线,它会搞砸所有东西
我认为正确的代码是lin = line
我发现的另一个错误是printf('%s',abc);类型说明符错误,因为abc已声明为字符,类型说明符必须为%c
我还发现了未使用的命令参数args和argv,它们只能用于传递从命令promt运行的参数