首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C-打印字符'>‘

C-打印字符'>‘
EN

Stack Overflow用户
提问于 2014-12-10 21:30:06
回答 2查看 123关注 0票数 1

如何在C中打印特殊字符'>‘?它会打印一个指向左侧的箭头,而我用scanf添加的字符确实会以正确的方式打印。

代码语言:javascript
运行
复制
int main (int argc, char **argv){
 int i;
 char line[2];
 line[1]=">";
 scanf("%c",&line[2]);
 for(i=1;i<=2;i++)
 printf("%c",&line[i]);
}
EN

回答 2

Stack Overflow用户

发布于 2014-12-10 21:33:15

  • C使用从零开始的索引。你的代码有系统地弄错了。
  • 您正在将字符的地址传递给printf,而不是字符。
  • 使用'引入字符文字。您使用了引入C字符串文字的"

你的代码应该是

代码语言:javascript
运行
复制
line[0] = '>';
scanf("%c", &line[1]);
for (i = 0; i < 2; i++)
    printf("%c", line[i]);

我的最后一条建议是,让您的编译器发出警告,然后注意它们。

票数 8
EN

Stack Overflow用户

发布于 2014-12-10 21:33:37

你的错误:

  1. scanf("%c",&line[2]); -->越界访问off-by-one。您正在尝试访问3rd元素,但该元素并不存在。请始终记住,element.
  2. printf("%c",&line[i]);中的数组索引是从0开始的,也就是说,索引n+1表示的是完全错误的循环,也许你与scanf()循环初始化和条件检查搞混了。

解决方案

change line[1]=">"; to line[0]='>';

  • change scanf("%c",&line[2]); to scanf(" %c",&line[1]);

  • change for(i=1;i<=2;i++) to for(i=0;i< 2;i++)

  • change for(i=1;i<=2;i++) to for(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changeline[1]=">";toscanf(" %c",&line[1]);

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)toscanf(" %c",&line[1]);

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • changefor(i=1;i<=2;i++)tofor(i=0;i< 2;i++)

  • change

注意:最好的做法是在main()中添加return值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27402286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档