我又回来了!段错误。。

C、C++和Java语言
回复
头像
lmlm221
帖子: 169
注册时间: 2006-07-27 23:12
送出感谢: 0
接收感谢: 0

我又回来了!段错误。。

#1

帖子 lmlm221 » 2010-01-05 19:05

想做个将网页转化为txt的小工具,代码如下:
main :

代码: 全选

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "head.h"

int main (int argc,char **argv){
    

    int i = 1;
    if(argc == 1)
        printf("plz input a file name\n");
    while( argc > 1 && i <=argc){
             
    filer(argv[i],newname(argv[i]));
    i++;
    }
    
    return 0;
}


head.h :

代码: 全选

extern char* newname (char *str);

extern void filer(char*old_name,char *new_name);
newname.c :

代码: 全选

#include <stdio.h>
#include <string.h>
#include "head.h"
char new[20],*p;
char* newname( char *str){
    int i,n;

    n = strlen(str);
    for(i = 0;i < 20;++i)
        new[i] = '\0';
    for (i = 0;i<n;++i)
    {
        if(str[i] == '.')
            break;
           
        new[i]=str[i];
    }
    p = strcat(new,".txt");
    return p;

}
filer.c :

代码: 全选

#include "head.h"
#include <stdio.h>
#include <stdlib.h>
void filer (char *old_name, char *new_name){
    FILE *fp,*fp1;
    char ch;
     if((fp = fopen(old_name,"rt")) ==NULL)
    {
        printf("err!\n");
        exit (1);
    }
    if((fp1 = fopen(new_name,"wt+")) == NULL){
        printf("err!\n");
        exit(1);
    }
    while ((ch = fgetc(fp)) !=EOF){
        if(ch == '<'){
            if((ch = fgetc(fp)) == 'p')
                fputc('\n',fp1);
            while ((ch=fgetc(fp)) != '>');

        }
        if (ch == '>')
            continue;
        fputc(ch,fp1);
    }
    rewind(fp1);
    while ((ch = fgetc(fp1 )) !=EOF)
    {
        putchar(ch);
    }
    fclose(fp);
    fclose(fp1);
}
生成的程序倒是可以工作,但是在程序运行完后会显示 “段错误”,请问哪里出错了?
UBUNTU
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

Re: 我又回来了!段错误。。

#2

帖子 BigSnake.NET » 2010-01-05 19:08

i < argc

至少有这个
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
lmlm221
帖子: 169
注册时间: 2006-07-27 23:12
送出感谢: 0
接收感谢: 0

Re: 我又回来了!段错误。。

#3

帖子 lmlm221 » 2010-01-05 19:13

i <=argc 有了啊
UBUNTU
头像
lmlm221
帖子: 169
注册时间: 2006-07-27 23:12
送出感谢: 0
接收感谢: 0

Re: 我又回来了!段错误。。

#4

帖子 lmlm221 » 2010-01-05 19:14

:em06 明白了,i<argc
UBUNTU
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

Re: 我又回来了!段错误。。

#5

帖子 BigSnake.NET » 2010-01-05 19:15

不能等于.. argv 的范围是 0 ~ argc-1
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
lmlm221
帖子: 169
注册时间: 2006-07-27 23:12
送出感谢: 0
接收感谢: 0

Re: 我又回来了!段错误。。

#6

帖子 lmlm221 » 2010-01-05 19:15

没有再提示段错误了,谢谢啊
UBUNTU
kinfinger
帖子: 198
注册时间: 2009-05-16 14:22
送出感谢: 0
接收感谢: 0

Re: 我又回来了!段错误。。

#7

帖子 kinfinger » 2010-01-12 19:14

:em11 learn !
missing is i missing you...
回复

回到 “C/C++/Java”