C语言字符数组输出问题

今见功名胜古人 2014-03-19 05:16:36
int j,i=0,n=0;
char ch,str[20];
while(ch=getchar()!='\n')
{
str[i]=ch;
i++;
}
for(j=0;j<5;j++)
printf("%c",str[j]);
这是源代码,想输出str,可是一直没法输出。感觉对着,不明白怎么回事?求解答一下。还有那个字符流读取时怎么回事?
...全文
1903 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 6 楼 xdayong 的回复:
有几个错误 第一,这里有优先级的问题,需要加小括号 while((ch=getchar())!='\n') 第二,在while循环里,在wile循环开始,需要判断i是否大于20,否则的话,会造成对内存的非法访问 { if( i>20) break; str[i]=ch; i++; } 第三,如果需要已字符串形式输出,则最好在开始初始化数组 str[i]={0},这时在while循环里,需要判断是否大于19,否则的话,字符串输出的话,多输出一些字符。
回复的很细致,受教了。没注意那么多。
xdayong 2014-03-19
  • 打赏
  • 举报
回复
有几个错误 第一,这里有优先级的问题,需要加小括号 while((ch=getchar())!='\n') 第二,在while循环里,在wile循环开始,需要判断i是否大于20,否则的话,会造成对内存的非法访问 { if( i>20) break; str[i]=ch; i++; } 第三,如果需要已字符串形式输出,则最好在开始初始化数组 str[i]={0},这时在while循环里,需要判断是否大于19,否则的话,字符串输出的话,多输出一些字符。
图灵狗 2014-03-19
  • 打赏
  • 举报
回复
改为 while((ch=getchar())!='\n')
引用 楼主 u011656266 的回复:
int j,i=0,n=0; char ch,str[20]; while(ch=getchar()!='\n') { str[i]=ch; i++; } for(j=0;j<5;j++) printf("%c",str[j]); 这是源代码,想输出str,可是一直没法输出。感觉对着,不明白怎么回事?求解答一下。还有那个字符流读取时怎么回事?
  • 打赏
  • 举报
回复
引用 1 楼 zhuobattle 的回复:
字符输出用:

int j,i=0,n=0;
	char ch,str[20] = {0};
	while((ch=getchar())!='\n')//注意这里的括号,优先级顺序会错!=优先级比=高,ch变成条件判断的结果0或1
	{
		str[i]=ch;
		i++;
	}
	str[i] = '\0';
	printf("%s\n",str);//输入字符串
另外这里的str[20]要注意下,别输入长度超过上限。
明白了,谢谢
赵4老师 2014-03-19
  • 打赏
  • 举报
回复
while(ch=getchar()!='\n') 应改为 while((ch=getchar())!='\n')
zhuobattle 2014-03-19
  • 打赏
  • 举报
回复
printf("%s\n",str);//输出字符串 上面的笔误:)
zhuobattle 2014-03-19
  • 打赏
  • 举报
回复
字符输出用:

int j,i=0,n=0;
	char ch,str[20] = {0};
	while((ch=getchar())!='\n')//注意这里的括号,优先级顺序会错!=优先级比=高,ch变成条件判断的结果0或1
	{
		str[i]=ch;
		i++;
	}
	str[i] = '\0';
	printf("%s\n",str);//输入字符串
另外这里的str[20]要注意下,别输入长度超过上限。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧