从键盘输入一串字符,以“#”结束,输出字符串。

Zzeroize 2010-06-15 01:34:10
这个以#结束怎么写啊?还有这个数组定义成50 如果没输入50个数,那输出已有的字符串之后是什么呢?麻烦大家讲清楚点,谢谢了。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
int i;
char a[50];
clrscr();
printf("Please insert a string end with \"#\".\n");
for(i=0;a[i]!='#';i++)
scanf("%c",&a[i]);
输出挺矛盾的,写不出。。。
...全文
3453 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdmdsc 2010-06-15
  • 打赏
  • 举报
回复
用getchar()函数即可
东莞某某某 2010-06-15
  • 打赏
  • 举报
回复
#include <stdio.h>

enum { SIZE=50 };

int main()
{

int i;
char a[SIZE],c;

for(i=0; (c=getchar())!='#' && i<SIZE-1 ;i++)
a[i] = c;

a[i] = 0;

printf("%s\n",a);

return 0;
}
sparrow081 2010-06-15
  • 打赏
  • 举报
回复


int main()
{
#define MAXLEN 49
int i;
char a[MAXLEN+1], *p = a;
while ((c = getchar()) && c != '#' && p-a < MAXLEN)
*p++ = c;
*p = '\0';
}

/* 如果你总是以\0结尾就是可以用作字符串处理,要不然就是只能遍历一输入的,因为该数组为局部变量
* 默认值没有定义
* 你的程序会造成数组越界;你可以该为 for (i = 0; a[i] != '#' && i < 50; i++
*/
mstlq 2010-06-15
  • 打赏
  • 举报
回复
楼主拿下面的去用吧……

#include <stdio.h>

int main()
{
char ch;
while((ch=getchar())!='#')
putchar(ch);
return 0;
}
chowming 2010-06-15
  • 打赏
  • 举报
回复

#include <stdio.h>
#define MAX_LEN 100

int main()
{
int ch;
char line[MAX_LEN];
int i = 0;
while((ch = getchar()) != EOF && ch != '#')
line[i++] = ch;
line[i] = '\0';
printf("%s\n",line);
return 0;
}

69,382

社区成员

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

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