一道二级题,关于字符串赋值问题,求解释

chenxue1111 2013-03-19 09:46:33
#include <stdio.h>
#include <string.h>
void fun(char *s, char t[])
{
int m = strlen(s);
int j = 0;
for (int i = 0;i<m;i++)
{
if((int(s[i]))%2 == 1&&i%2 == 0)
continue;
t[j++] = s[i];
}
t[j] = 0;
//t[j]='/0';


}

void main()
{
char s[100], t[100];
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
//NONO();
}

字符串最后一个字符不是应该是/0吗?为什么这里反而给它赋0是对的,而赋/0,输出是
Please enter string S:ABCDEFG12345

The result is: BDF123450烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫藺BCDEFG12345
请按任意键继续. . .
...全文
225 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
armsword 2013-03-20
  • 打赏
  • 举报
回复
因为t[j]='/0' 这句赋值语句相当于你给一个地址赋了2个值,应该这样,t[j]='/' t[j+1]='0'
外天楼 2013-03-20
  • 打赏
  • 举报
回复
引用 2 楼 chenxue1111 的回复:
引用 1 楼 waitianlou 的回复:请注意 是 C/C++ code?1'\0'; 而不是 C/C++ code?1'/0'; 那这个和直接赋0有什么区别呢
C风格字符串会一直输出到指针指向 结束字符 NULL 为止 NULL 的值就是 0 (在 stdio.h 中有宏定义 #define NULL 0) 而 '\0' 是转义字符 也表示 0
enjoyzhiwei2012 2013-03-20
  • 打赏
  • 举报
回复
建议楼主看看这个关于字符串的赋值http://blog.sina.com.cn/s/blog_75f4e17c01012v4w.html
chenxue1111 2013-03-19
  • 打赏
  • 举报
回复
引用 3 楼 love_yourlife 的回复:
你是字符数组,当然不是以’\0‘结尾咯,要注意字符数组和字符串的区别
最后输出时不时应该在数组后加一个\0元素吗?不然怎么知道数组的结束呢?
love_yourlife 2013-03-19
  • 打赏
  • 举报
回复
你是字符数组,当然不是以’\0‘结尾咯,要注意字符数组和字符串的区别
chenxue1111 2013-03-19
  • 打赏
  • 举报
回复
引用 1 楼 waitianlou 的回复:
请注意 是 C/C++ code?1'\0'; 而不是 C/C++ code?1'/0';
那这个和直接赋0有什么区别呢
外天楼 2013-03-19
  • 打赏
  • 举报
回复
请注意 是

'\0';
而不是

'/0';

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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