| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2173 人关注过本帖
标题:求助高手关于对TXT文件中指定的列读取操作的问题-帮忙调试
只看楼主 加入收藏
jianguom
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-26
收藏
得分:0 
回复 10楼 voidx
我对C这几天用才看了二天,所以好多不太懂,有时间能帮我完善一下不,
只需要对指定的第5列查找就行,只是数字,提示查3的行,如何实现?
2011-04-26 11:34
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
回复 9楼 jianguom
你不会是用VC++来运行我的C#程序吧!

   唯实惟新 至诚致志
2011-04-26 11:44
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
程序代码:
using System;
using System.Collections.Generic;
using using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using namespace ReadTxt
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnOpen_Click(object sender, EventArgs e)
        {
            DialogResult d = openFileDialog1.ShowDialog();
            if (d == DialogResult.OK)
            {
                txtPath.Text = openFileDialog1.FileName;
            }
        }

        private void btnSel_Click(object sender, EventArgs e)
        {
            DialogResult d = saveFileDialog1.ShowDialog();
            if (d == DialogResult.OK)
            {
                txtSave.Text = saveFileDialog1.FileName;
            }
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
           
            int col = 0;
            string num = "";
         
            try
            {
                StreamReader sr = new StreamReader(txtPath.Text);  //原始文件
                StreamWriter sw = new StreamWriter(txtSave.Text);  //保存在这里
                col = int.Parse(txtCol.Text);
                num = txtText.Text;
                try
                {
                    string[] str = new string[300]; //如果不超过300列
                    string s = "";
                    char[] ch ={ ';' }; //以分号分隔字符串,注意要用英文符号
                    while (sr.Peek() != -1)  //检查文件结束
                    {
                        s = sr.ReadLine();  //读行
                        str = s.Split(ch, StringSplitOptions.RemoveEmptyEntries);  //分隔字符串,存入str中
                        if (str[col - 1].CompareTo(num) == 0)  //相等
                        {
                            sw.WriteLine(s);  //写入文件
                        }
                    }
                    label4.Text = "运行成功";
                }
                catch (Exception a)  //程序异常处理
                {
                    label4.Text = "运行失败";
                }
                finally  //关闭文件流
                {
                    sr.Close();
                    sw.Close();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("输入有误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label4.Text = "准备就绪";
        }
    }
}
图片附件: 游客没有浏览图片的权限,请 登录注册

ReadTxt.rar (50.85 KB)

完成了,不过你的电脑可能不能运行啊!装VS2005没?

   唯实惟新 至诚致志
2011-04-26 12:23
jianguom
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-26
收藏
得分:0 
回复 13楼 qq1023569223
非常感谢,认识你太好了。
2011-04-26 13:17
jianguom
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-26
收藏
得分:0 
谁帮调试一下,老是出错:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* max number of words a line contains */
#define WORD_NUM 7

/* max number of letters a line contains*/
#define LINE_MAX 300

/* max number of letters a word caontains*/
#define WORD_MAX 30
void Handle(const char * input_file_name, const char *output_file_name, int colomn_no, char *value)
{
 int counter = 0;
 char line[LINE_MAX], line_backup[LINE_MAX];
 char content[WORD_NUM+1][WORD_MAX];
 FILE * input_fp = fopen(input_file_name, "r");
 if (input_fp == NULL) {
  printf("file open error\n");
  exit(1);
 }
 FILE * output_fp = fopen(output_file_name, "w+");
 if (output_fp == NULL) {
  fclose(output_fp);
  printf("file open error\n");
  exit(1);
 }

 while (fscanf(input_fp, "%s", line) && !feof(input_fp)) {
  strcpy(line_backup, line);
  char *s = strtok(line, ";");
  int i = 1;
  while (s != NULL) {
   strcpy(content[i++], s);
   s = strtok(NULL, ";");
  }
  if (strcmp(content[colomn_no], value) == 0) {
   fprintf(output_fp, "%s\n", line_backup);
   ++counter;
  }
 }

 fclose(input_fp);
 fclose(output_fp);

 printf("%7d lines match in total\n", counter);

}

int main()
{
 int colomn_no;
 char value[30];
 printf("please input colomn number:\n");
 scanf("%d", &colomn_no);
 printf("please input the value:\n");
 scanf("%s", value);
 Handle("in.txt", "out.txt", colomn_no, value);

 return 0;
}
2011-04-27 13:49
快速回复:求助高手关于对TXT文件中指定的列读取操作的问题-帮忙调试
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057226 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved