C语言中的字符打印
我试图修改里奇和克尼汉的一些代码,但这一个似乎没有返回预期的: 字符1 字符2 角色3 。。。但实际上有些奇怪: 字符1 2. 角色3 四,C语言中的字符打印,c,C,我试图修改里奇和克尼汉的一些代码,但这一个似乎没有返回预期的: 字符1 字符2 角色3 。。。但实际上有些奇怪: 字符1 2. 角色3 四, #包括 main() { char cadena[10],cadinver[10],c; 林林内,i ;; lim=10; i=0; 对于(i=0;(i我没有c的环境,但是: 在最后一次访问cadena时添加'\0'。因此在for之后,执行cadena[i]='\0' 您有一个由10个元素组成的数组。但是在char*中,您应该考虑“\0”。因此lim应该是
#包括
main()
{
char cadena[10],cadinver[10],c;
林林内,i ;;
lim=10;
i=0;
对于(i=0;(i我没有c的环境,但是:
在最后一次访问cadena时添加'\0'。因此在for之后,执行cadena[i]='\0'
您有一个由10个元素组成的数组。但是在char*中,您应该考虑“\0”。因此lim应该是9(而不是10)
在printf的末尾使用“\n”。可能有帮助
我不明白你为什么要使用这个系统(“暂停”)
祝你好运
好的-更正了这有点棘手,但我认为这就是正在发生的事情。
当您使用键盘2进行写入,然后按enter键时,您需要做什么
实际上,程序的“give”是“2”\n,这是2个字符。所以
第一个getchar()获取数字2,另一个获取'\n'
性格
尝试修改for循环体,如下所示:
cadena[i]=c;
printf("%c %d",c,i);
getchar();
您忘记在循环后使用saycadena[i]='\0'
和lim=9
编写字符串终止符,以便为其留出空间。在发布代码的其他问题中,未使用变量:cadinver[10]
。而不是调用系统(暂停)不可移植的,使用以下两行:while(int ch=getchar()&&ch!=EOF&&ch!='\n');getchar();
暂停
是为了防止在看到输出之前关闭终端窗口。cadena[++i]
是错误的,i
已经是循环结束后的正确索引。
cadena[i]=c;
printf("%c %d",c,i);
getchar();