2011-11-14 41 views
-3
#include <stdio.h> 
#inlcude <stdlib.h> 
#include <string.h> 
int main() 
{ 
char ch[80] = "<Hi> How are you </Hi>"; /* This is the string, The output should be 
    Element : Hi How are you */ 
int i; 
for(i=0;ch[i] != '\0';) 
{ 
    if (ch[i] == '<') 
    { 
     printf ("Element : "); 
     i++; 
      while(ch[i] != '<') 
       { 
        if (ch[i] == '>') 
        { 
         printf(" "); 
         i++; 
        } 
        else 
        { 
         printf ("%c", ch[i]); 
         i++; 
        } 
       } 
     } 
    else 
     i++; 
    } 

    return 0; 
    } 

我得到Segmentation fault core dump。没有编译器错误,但是当我运行该程序时,我得到了Segmentation fault core dump。我使用Unix Putty。请检查代码有什么问题

+1

您能否先修复您的缩进并从gdb发回回溯? – thiton

+2

具有'#inlcude'指令的程序如何编译和工作? – glglgl

+0

首先关闭:#inlcude Tudor

回答

1

你有两个循环。只有一个检查'\ 0'。

编辑: 一个for-loop应该看起来像这样。注意,你忘了我的计数器i ++!

for(i = 0; i < 10; i++) 
    printf("i: %d\n", i); 
+0

我力求让你..你能解决这个问题吗? – holbond

+0

嗨..你不需要i ++的for循环..它仍然有效..我后来给增量计数器..为什么我需要这个&&东西..它不会给出所需的输出。请参阅我的输出shud是“元素:你好吗”其他嗨是想通过删除..它实际上打印标签名称和它的值..为什么我需要打印两次标签名称?此外,柜台的东西是不需要的。伙计们cmon ..请检查代码正确..其实我通过写最后如果循环闭合大括号之前退出(1)固定它..问题是for循环不能够找到我想'\ 0'的东西.. – holbond