C语言程序提示段错误

zhangsanm 2010-02-01 10:14:35
是《C程序设计语言第二版》的一个习题:

要求输入一段字符,然后进行处理,去处掉行尾的空格和制表符,

我的程序如下,可以编译,但执行时提示段错误:

#include <stdio.h>
#define MAXLINE 1000

void change(char *s);

int main()
{
char s[10][1000];
int c;
int i, j;

printf("Please input something:\n");
for (i=0; i<10 && (c=getchar())!=EOF; ++i)
{
for (j=0; j<1000 && (c=getchar())!=EOF && c!='\n'; ++j)
s[i][j] = c;
s[i][j] = '\n';
}
printf("\n\n");

for (i=0; i<10; ++i)
change(&s[i][0]);

return 0;
}

void change(char *s)
{
int m, n;

for (m=0; m<1000 && s[m] != '\n'; ++m)
;
for (n=m-1; n>=0; --n)
{
if (s[n] == '\t' || s[n] == ' ')
--m;
else
break;
}
n = 0;
while (n<m)
{
printf("%s", s[n]);
++n;
}

}



C语言新手,希望高手不吝赐教!
...全文
67 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallbear_2008 2010-02-02
  • 打赏
  • 举报
回复
嗯,s[n]是一个字符
zhangsanm 2010-02-02
  • 打赏
  • 举报
回复
非常好,解决了

谢谢两位
brookmill 2010-02-01
  • 打赏
  • 举报
回复
while (n<m)
{
printf("%s", s[n]); // 改成 printf("%c", s[n]);
++n;
}
// 加一行 printf("\n");

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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