c#如何保存数组数据到TXT???

c#如何保存数组数据到TXT???

c#

6个回答

很简单的:
string[] arr={ "abc", "def" };
File.WriteAllLines("d:\test.txt", arr);

不知道你的数组放的是什么类型,如果简单类型比如string啊什么的可以直接用比如:
File.WriteAllText(string path) 保存字符串到一个指定路径文件

如果是复杂的引用类型,可以序列化

数组保存到 TXT 文档,你是想直接将数据对应的内存保存到 TXT,还是要对数据进行格式来保存到 TXT 呢?
可以模拟如下写 LOG 的函数:

 private void WriteLogFile(string input)
  { 
    //指定日志文件的目录
    string fname = Server.MapPath("upedFile") + "\\logfile.txt";
    //定义文件信息对象
    FileInfo finfo = new FileInfo(fname);

    //判断文件是否存在以及是否大于2K
    if ( finfo.Exists && finfo.Length > 2048 )
    {
      //删除该文件
      finfo.Delete();
    }
    //创建只写文件流
    using(FileStream fs = finfo.OpenWrite())
    {
      //根据上面创建的文件流创建写数据流
      StreamWriter w = new StreamWriter(fs);

      //设置写数据流的起始位置为文件流的末尾
      w.BaseStream.Seek(0, SeekOrigin.End);

      w.Write("\nLog Entry : ");

      //写入当前系统时间并换行
      w.Write("{0} {1} \r\n",DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());

      //写入日志内容并换行
      w.Write(input + "\n");

      //写入------------------------------------“并换行
      w.Write("------------------------------------\n");

      //清空缓冲区内容,并把缓冲区内容写入基础流
      w.Flush();

      //关闭写数据流
      w.Close();
    }
  }

把数组拼成一个字符串,用Tab分隔或者空格,然后写到txt文件中。

FileStream fs = new FileStream("D:\A.txt",FileMode.Apend);
StreamWriter sw = new StreamWriter(fs,Encoding.Default);
string strData = "这里放你把数组拼成的字符串";
sw.Write(strData);
sw.Close();
fs.Close();

数组格式化成字符串,然后写入文本。读取的时候,读入字符串,然后反序列化回

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用C#进行存储数据txt数据,要求按照以下规则
对于以下txt数据,要将第一行单独存储,对于2到7单独存储,队友下面的数据L和S之后的数据单独存储,应该怎么用StreamWriter写入数组中,之前的点号单独存储,并能方便以后调用, 3.5,5,5 ID147,312303.586,499860.308 ID148,311970.966,499740.297 ID164,303521.015,497684.195 ID165,303069.052,497407.154 ID180,295818.444,495133.562 GPS22,295447.814,494949.879 ID148 ID147,L,0 ID149,L,185.3358 ID149,S,672.914 ID149 ID148,L,0 GPS17,L,183.3508 GPS17,S,376.229 GPS17 ID149,L,0 ID150,L,140.2215 ID150,S,484.698 ID150 GPS17,L,0 ID152,L,186.3618 ID152,S,788.25 ID152 ID150,L,0 GPS18,L,173.0720 GPS18,S,311.591 GPS18 ID152,L,0 ID153,L,199.0044 ID153,S,370.647 ID153 GPS18,L,0 ID154,L,188.2144 ID154,S,585.478
C#中读取txt文件列数据并存入int数组中
我有一个空间绘图的C#程序,txt文件中有三列点的坐标,每行数据由空格隔开,现在需要定义三个x,y,z 一维int数组并将txt文件中列数据赋给x,y,z,txt数据量很大,可能有上千组,希望能够得到代码并在程序中直接调用x[i],y[i],z[i]
C# DataTable格式转换的问题。
本人在做一个数据库 入库工具。可以把文本文件(.txt文件)中的数据,筛选(要区分分隔符和数据)。导入到指定的数据库表中。 思路是这样的: 1.在内存中创建一个表ResourceTable,并创建数据行,同时规定了这个表的每个列的数据类型(这个很重要)。 2.然后,逐行读取.txt文件。筛选。把数据和分隔符区分开来。并把要存入对应列的数据,转换成该列的数据类型(也就是说转换成ResourceTable中列的数据类型)。 3.把这个表导入到数据库。 但是小弟在第2步。碰到了问题。 问题是: 怎么根据ResourceTable列的数据类型,把要存入该列的数据进行类型转换。这个要怎么做? 描述一下问题吧。贴些代码。免得像我在QQ群里面一下,问了半天,没人懂。我问了什么? ![图片说明](https://img-ask.csdn.net/upload/201507/31/1438329909_836140.png) 这个是小弟的程序界面,大家可以大致的了解是个什么东西。 这个是读.txt文件的代码段, /// <summary> /// 读取文本文件,获取指定行数 /// </summary> /// <param name="saveTable">用于保存数据的table</param> /// <param name="TextFilePath">文本文件的路径</param> /// <param name="SplitString">分隔字符串</param> /// <param name="RowsCount">要读取的行数</param> /// <returns>如果获取到指定的行数,则正常,否则返回false代表失败。</returns> public static bool ReaderText(DataTable saveTable,string TextFilePath,string SplitString,UInt64 RowsCount ) { /*分隔措施*/ string[] data_mark = new string[] { "data" }; String[] sep_string = SplitString.Split(data_mark, StringSplitOptions.RemoveEmptyEntries); //通过切割字符串,把所有的非data标志的数据,判定为分隔符 string[] one_line; //文本文件中的一行 string badrow=null; //坏行,存在问题的行 /*构建文件流读取器*/ StreamReader sr; FileStream fs ; try { fs= File.OpenRead(TextFilePath); //创建文件流对象 sr = new StreamReader(fs, Encoding.Default); //创建一个指向文件的流读取器 } catch (Exception) { return false; //出现异常,读取失败 throw; } /*读取指定的行数并存入表中*/ for (UInt64 i = 0; i < RowsCount; i++) { try { DataRow one_row = saveTable.NewRow(); badrow=sr.ReadLine(); one_line = badrow.Split(sep_string, StringSplitOptions.RemoveEmptyEntries); //把取出来的分隔符数组作为切割标志,对从文本文件读到的数据进行分隔 for (int j = 0; j < one_line.Length; j++) //创建行,并往行里面添加数据 { one_row[j] = one_line[j]; // MessageBox.Show(saveTable.Columns[j].DataType.FullName); one_row[j]=(saveTable.Columns[j].DataType.FullName)one_line[j].ToString(); //【这里需要把存入saveTable的数据进行类型转换, //转换成和saveTable的对应列的数据类型一致。 //因为我的saveTable是把对应的列设置了数据类型的。 // (typeof(saveTable.Columns[j].DataType.FullName)); // System.Convert.(saveTable.Columns[j].DataType.FullName). } saveTable.Rows.Add(one_row); //把这一行添加到表里面 Form1.getInstance().progressBar1.PerformStep(); } catch (Exception) { BadRowsProcess(badrow, TextFilePath); //对坏行进行处理 // throw; } } sr.Dispose(); fs.Dispose(); return true; //正常读完了 } 这里是构建那个ResourceTable的代码段。 private void button_Insert_Click(object sender, EventArgs e) //开始入库按钮 { ResourceTable = new DataTable(); ResourceTable.Clear(); /*构建一下源表*/ DataTable TargetTableDes = ADO.selectOracle("select column_name,data_type,DATA_LENGTH from user_tab_columns where table_name='" + comboBox1.SelectedItem.ToString() + "'"); foreach (DataRow item in TargetTableDes.Rows) { ResourceTable.Columns.Add("【" + item[0].ToString() + "】" + item[1].ToString() + "(" + item[2].ToString() + ")"); //增加列名 ResourceTable.Columns["【" + item[0].ToString() + "】" + item[1].ToString() + "(" + item[2].ToString() + ")"].DataType = Type.GetType(item[1].ToString()); //给列限制数据类型。 } 小弟想问,怎么根据ResourceTable的列的数据类型,把存入这个列的数据,转换成和这个列的数据类型一致的。 而且这个问题还有以下几个特点: 1.ResourceTable的列不止一个,而且不同的列,数据类型可能不同。同时,用户,可能把同样的数据,导入不同的表,所以ResourceTable列的列数和列的数据类型。都是根据用户的选择,在程序运行期间确定的。 2.数据库的类型和C#的类型,不完全相同。比如数据库的date类型,等等。可能会碰到在数据库的类型中有,而在C#的类型中没有的情况。那这种情况要怎么处理? 3.这个数据类型转换语句,是要求性能的。因为可能要读上百万行的文本文件,而且对每一个列都要进行转换。最好是一行代码就可以完成这个功能。 好的啰嗦了点。求各位大神,指点指点,希望大家能看懂我的需求。也就是一个数据类型转换的问题。 第一次提问啊。表达不清楚之处。多多谅解,要是还是看不懂,就问我。我再补充。
c#读取txt的文件(求优化,读取不了60k以上的txt文件)
byte[] byData = new byte[100]; char[] charData = new char[1000]; public void Read() { try { FileStream file = new FileStream("E:\\test.txt", FileMode.Open); file.Seek(0, SeekOrigin.Begin); file.Read(byData, 0, 100); //byData传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符. Decoder d = Encoding.Default.GetDecoder(); d.GetChars(byData, 0, byData.Length, charData, 0); Console.WriteLine(charData); file.Close(); } catch (IOException e) { Console.WriteLine(e.ToString()); } } 复制代码   (2).使用StreamReader读取文件,然后一行一行的输出。 复制代码 public void Read(string path) { StreamReader sr = new StreamReader(path,Encoding.Default); String line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line.ToString()); } } 复制代码 3.文件的写入   (1).使用FileStream类创建文件,然后将数据写入到文件里。 复制代码 public void Write() { FileStream fs = new FileStream("E:\\ak.txt", FileMode.Create); //获得字节数组 byte[] data = System.Text.Encoding.Default.GetBytes("Hello World!"); //开始写入 fs.Write(data, 0, data.Length); //清空缓冲区、关闭流 fs.Flush(); fs.Close(); } 复制代码   (2).使用FileStream类创建文件,使用StreamWriter类,将数据写入到文件。 复制代码 public void Write(string path) { FileStream fs = new FileStream(path, FileMode.Create); StreamWriter sw = new StreamWriter(fs); //开始写入 sw.Write("Hello World!!!!"); //清空缓冲区 sw.Flush(); //关闭流 sw.Close(); fs.Close();
C#中如何大幅提高写excel文件的速度?
输入文件:input.txt包含以【;】号或者【\t】制表符分隔的多行(实际在100万行以上)数据,每行数据个数不定。 ======================== a;b;c 1;2; 1;2;3;4;5 输出文件;output.xlsx ======================== a b c 1 2 1 2 3 4 5 ======================== 问题:写了个小程序处理2000行在10s以内,百万行速度就太慢,无法忍受了。求教一些能显著提高写Excel速度的方法。网上查的先变成二维数组之类的方法,效果不大。百万行在20min以内就好。
c#循环中动态添加数组问题
请教大神,while循环中如何实现按行读取txt文本(行数不固定,列数固定),动态赋给数组或结构体,第一列数据排序后(有重复数据)生成新的文本? 每行列数固定所以定义结构体存储SetLine; 原本考虑将其存入结构体类型数组,但数组不能动态增加; 后考虑泛型List [SetLine],第一列单独提取排序list[T],但是第一列有重复数据(如3、2、2、5、6、5),排序后操作不方便,排序后不晓得如何与这一行映射起来; 请教各位循环动态赋给数组,操作方便有什么方法或数据类型?
C# 按行读取txt文本内容导入数据库SQL(1)第二行数据就从第二列插入(2)索引超出了数组界限?
都是按行读取txt内容,(因为有两行数据和其他的不一样)用正则分析出来,赋给一个字符串数组, 将一个字符串数组的每个值一次写入数据库行的对应列。一行读取完成。 可是却显示,索引超出了数组界限,数组个数和行对应的 。将读取出来的数据显示在textBox中是正确的, 但是奇怪的是也确实是导入进去了,数据库中表格有了数据 最终结果似乎对的,除了第二行第一列没有数据。谢谢,刚入手,第一个程序!
c#通过ftp上传文件返回227,代码如下
``` if(Upload("C:\\Users\\Administrator.AFABW-704091758\\Desktop\\123.jpg", "ip:60021/home/pdsftp")) { this.textBox1.Text = "123"; } else { this.textBox1.Text = "456"; } ``` ``` /// <summary> /// 上传文件 /// </summary> /// <param name="localpath">上传文件的全路径 例@"D:\123.txt"</param> /// <param name="ftppath"></param> /// <returns></returns> public bool Upload(string localpath, string ftppath) { bool bol = false; try { FileInfo fileInf = new FileInfo(localpath); //替换符号 ftppath = ftppath.Replace("\\", "/"); //组合ftp上传文件路径 string uri = "ftp://" + ftppath + "/" + fileInf.Name; // 根据uri创建FtpWebRequest对象 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); // 指定数据传输类型 reqFTP.UseBinary = true; // ftp用户名和密码 reqFTP.Credentials = new NetworkCredential("username", "password"); // 默认为true,连接不会被关闭 // 在一个命令之后被执行 reqFTP.KeepAlive = false; // 指定执行什么命令 reqFTP.Method = WebRequestMethods.Ftp.UploadFile; // 上传文件时通知服务器文件的大小 reqFTP.ContentLength = fileInf.Length; reqFTP.UsePassive = false; // 缓冲大小设置为kb int buffLength = 2048; byte[] buff = new byte[buffLength]; int contentLen; // 打开一个文件流(System.IO.FileStream) 去读上传的文件 FileStream fs = fileInf.OpenRead(); try { // 把上传的文件写入流 Stream strm = reqFTP.GetRequestStream(); // 每次读文件流的kb contentLen = fs.Read(buff, 0, buffLength); // 流内容没有结束 while (contentLen != 0) { // 把内容从file stream 写入upload stream strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); bol = true; } // 关闭两个流 strm.Close(); fs.Close(); } catch (Exception ex) { MessageBox.Show("上传文件失败,失败原因;" + ex.Message); } } catch (Exception ex) { MessageBox.Show("上传文件失败,失败原因;" + ex.Message); } return bol; } ``` 不加这个返回227,按照网上说的加上后返回500 ![图片说明](https://img-ask.csdn.net/upload/201912/09/1575885567_162180.png)
c++读取txt文件里的数据,然后保存在二维数组中进行处理
我写的程序是把数据自己输入在主函数里,但是如果想实际的应用应该是有一个数据文件,然后提取出数据文件的数据保存在二维数组中才对,而且这个二维数组要根据具体文件的大小定数组的行列数,有谁能帮我做一下吗,谢谢! #include<iostream> #include<fstream> #include<math.h> using namespace std; #define M 10//二维数组的行 #define N 6//二维数组的列 class Data { double a[M][N];//声明数组 double Max; double Min; double r; public: Data(double b[M][N])//构造函数 { int i, j; for (i = 0; i < M; i++) for (j = 0; j < N; j++) a[i][j] = b[i][j]; } void Chuzhi();//初值化 void get_Max_Min();//根据公式求出求差序列的两级最大差、最小差 void get_r();//求出各列关联度 void show_Max_Min() { cout << "求差序列的两级的最大差是:" << Max << endl << endl; cout<<"求差序列的两级的最小差是:"<< Min << endl<<endl; } void show()//输出数组 { int i, j; for (i = 0; i < M; i++) { for (j = 0; j < N; j++) cout << a[i][j] << '\t'; cout << endl; } } }; void Data::Chuzhi()//量纲不同时化为无量纲 { for (int i = M - 1; i >= 0; i--) for (int j = N - 1; j >= 0; j--) a[i][j] = a[i][j] / a[0][j]; } void Data::get_Max_Min() { double c[M][N - 1]; double t = c[0][0]; for (int i = 0; i < M; i++) for (int j = 1; j < N; j++) c[i][j - 1] = fabs(a[i][0] - a[i][j]);//求差序列 //下面的代码可用于输出求差序列 cout << endl; cout << "求差序列为:" << endl; int i, j; for (i = 0; i < M; i++) { for (j = 0; j < N - 1; j++) cout << c[i][j] << '\t'; cout << endl; } for (int i = 0; i < M; i++) { for (int j = 0; j < N - 1; j++) { if (c[i][j]>t) t = c[i][j]; } } Max = t; for (int i = 0; i < M; i++) { for (int j = 0; j < N - 1; j++) { if (c[i][j] < t) t = c[i][j]; } } Min = t; } void Data::get_r() { double f[M][N]; for (int j = 0; j < N; j++) for (int i = 0; i < M;i++) f[i][j] = (Min + 0.5*Max) / (fabs(a[i][0] - a[i][j]) + 0.5*Max); for (int i = 0; i < M; i++)//输出关联系数序列 { for (int j = 0; j < N; j++) cout << f[i][j] << '\t'; cout << endl; } cout << "下面求出各列的关联度:" << endl<<endl; double r[N] = { 0 }; double sum[M] = { 0 }; for (int j = 0; j < N; j++) { for (int i = 0; i < M; i++) sum[j] += f[i][j]; } for (int j = 0; j < N; j++) { r[j] = sum[j] / M; cout << "第" << j + 1 << "列与第一列的关联度为:" << r[j] << endl << endl; } } int main() {//将要处理的数据 double b[M][N] = { { 44,5, 35, 60, 110, 130}, { 45,6, 40, 67, 120, 140}, {54, 7, 50, 72, 122, 150}, { 49,8, 50, 80, 124, 160}, { 43,9, 60, 79, 121, 170}, {54, 20, 60, 90, 122, 156}, { 39,13, 40, 70, 111, 157}, { 37,27, 65, 83, 130, 189}, { 43,35, 80, 72, 145, 165}, { 34,67, 70, 69, 123, 157} }; Data data(b);//建立对象data cout << "最初的数据为:" << endl; data.show(); cout << endl; data.Chuzhi(); cout << "初始化后数据:" << endl; data.show(); cout << endl; data.get_Max_Min(); data.show_Max_Min(); data.get_r(); system("pause"); return 0; }
从数组中读取的数据无效
报错:table中读取的数据无效 分析了一下代码,应该是我运行代码的时候出现了table【-2】 我的问题:一个m_*n的矩阵,假设其中一个元素为(m,n) 怎样遍历以(m,n)为中心的“十字”的元素? ps:附上源码_ ``` #include<stdio.h> int m, n; int count = 1; int i, j; int p, q;//数十字格 int ray;//周围雷的个数 char table[100][100]; char result[100][100]; main() { FILE* fp; freopen_s(&fp, "in.txt", "r", stdin); freopen_s(&fp, "out.txt", "w", stdout); while (scanf_s("%d %d", &m, &n) != EOF) { printf("FILED#%d\n", count); for (i = 0;i < m;i++) { for (j = 0;j < n;j++) { scanf_s("%s", &table[i][j],100); } } for (i = 0;i < m;i++) { for (j = 0;j < n;j++) { if (table[i][j] == "*") { result[i][j] = "*"; } else { for (p = i - 2;p<= i + 2;p++) { for (q = j - 2;q <= j + 2;q++) { if (table[p][q] == "*") { ray = ray + 1; } } result[i][j] = ray; } } } } count = count + 1; } } ```
c#异步通信代码错误问题
public void ConnectCallback(IAsyncResult ar) { Socket client = (Socket)ar.AsyncState; client.EndConnect(ar); bool connect_flag = false; connect_flag = true; ManualResetEvent connectDone = new ManualResetEvent(false); //连接的信号 connectDone.Set(); } //vs的这段代码中 ,bool connect_flag的connect_flag报了一个警告错误,变量connect_flag已赋值,但是其值从未使用过。如何修改? public static MODEL.DataSourceVersionQuery BrowseDataSource_QueryVersionData() { MODEL.DataSourceVersionQuery result = new MODEL.DataSourceVersionQuery(); //获取数据包 string strPacket = BrowseDataSource_PrepareVersionPacket(); //向服务端提交查询版本信息 string str = DAL.socket.GetSocketData(strPacket); //DAL.socket.GetSocketData(strPacket) vs报了一个错误,非静态字段、方法或属性DAL.socket.GetSocketData(string)“要求对象引用。如何修改? 还有这个错误![图片说明](https://img-ask.csdn.net/upload/201509/16/1442412249_893824.png) 另外我想把DAL中的socket.cs的 public byte[] bytesReceived { get; set; }这段移动到Model中而不报错要如何修改? DAL中socket完整代码如下: using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.ComponentModel; using System.Data; using System.Windows.Forms; using System.Threading; namespace DAL { /// <summary> /// Socket接口 /// </summary> class socket { //Socket public Socket clientSocket; /// <summary> /// socket连接 /// </summary> /// <returns> /// true 成功 /// false 失败 /// </returns> public bool SocketConnect() { byte[] bytesReceived = new byte[256]; ManualResetEvent connectDone = new ManualResetEvent(false); //连接的信号 ManualResetEvent sendDone = new ManualResetEvent(false); //发送结束 //从配置文件获取IP string SocketIP = DAL.Common.ReadConfigString("Recover", "IP"); //从配置文件获取端口 int SocketPort = Convert.ToInt32(DAL.Common.ReadConfigString("Recover", "Port")); //创建IP地址 IPAddress IP = IPAddress.Parse(SocketIP); try { //创建socket实例 clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建网络端点 IPEndPoint ipEnd = new IPEndPoint(IP, SocketPort); //与目标终端连接 clientSocket.BeginConnect(ipEnd, new AsyncCallback(ConnectCallback), clientSocket);//调用回调函数 connectDone.WaitOne(); if (clientSocket.Connected) { return true; } else { return false; } } catch (Exception e) { string strError = ""; strError += "\r\n SocketIP = " + SocketIP.ToString(); strError += "\r\n SocketPort = " + SocketPort.ToString(); DAL.Common.WriteErrorLog(e, strError); return false; } } /// <summary> /// 异步连接的回调函数 /// </summary> /// <param name="ar"></param> public void ConnectCallback(IAsyncResult ar) { Socket client = (Socket)ar.AsyncState; client.EndConnect(ar); bool connect_flag = false; connect_flag = true; ManualResetEvent connectDone = new ManualResetEvent(false); //连接的信号 connectDone.Set(); } /// <summary> /// Socket发送数据 /// </summary> /// <param name="strSend"> /// 数据的内容 /// </param> public void SocketSend(string strSend) { Socket clientSocket; //发送创建套接字 int length = strSend.Length; Byte[] bytesSent = new byte[length]; clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { bytesSent = System.Text.Encoding.Default.GetBytes(strSend); //将字符串指定到指定Byte数组 clientSocket.BeginSend(bytesSent, 0, bytesSent.Length, 0, new AsyncCallback(SendCallback), clientSocket); //异步发送数据 ManualResetEvent sendDone = new ManualResetEvent(false);//发送结束 sendDone.WaitOne(); } catch (Exception e) { string strError = ""; DAL.Common.WriteErrorLog(e, strError); } } public void SendCallback(IAsyncResult ar) //发送的回调函数 { ManualResetEvent sendDone = new ManualResetEvent(false); //发送结束 Socket client = (Socket)ar.AsyncState; int bytesSend = client.EndSend(ar); //完成发送 sendDone.Set(); } /// <summary> /// Socket接收数据 /// </summary> /// <returns> /// 收到的数据 /// </returns> public string SocketReceive() { string result = ""; try { MemoryStream stream = new MemoryStream(); Byte[] bytesReceived = new Byte[256]; clientSocket.BeginReceive(bytesReceived, 0, bytesReceived.Length, 0, new AsyncCallback(ReceiveCallback), clientSocket); ManualResetEvent sendDone = new ManualResetEvent(false); //发送结束 sendDone.WaitOne(); } catch (Exception e) { string strError = ""; DAL.Common.WriteErrorLog(e, strError); } return result; } public void ReceiveCallback(IAsyncResult ar) { Socket client = (Socket)ar.AsyncState; //获取句柄 int bytesread = client.EndReceive(ar); if (bytesread > 0) { clientSocket.BeginReceive(bytesReceived, 0, bytesReceived.Length, 0, new AsyncCallback(ReceiveCallback), client); string content = Encoding.ASCII.GetString(bytesReceived, 0, bytesReceived.Length); } else { ManualResetEvent readDone = new ManualResetEvent(false); //读信号 readDone.Set(); } } /// <summary> /// Socket通信 /// </summary> /// <param name="strSend"> /// 发送的信息 /// </param> /// <returns> /// 包体的内容 /// </returns> public string GetSocketData(string strSend) { string strDatas = ""; string strResult = ""; string strExtLength = ""; try { //Socket连接 SocketConnect(); //发送信息 SocketSend(strSend); //接收服务器的信息 strResult = SocketReceive(); //获取扩展信息的长度 strExtLength = strResult.Substring(16, 12); int ExtLength = Convert.ToInt32(strExtLength); //扩展信息,暂不使用 //string strExtInfo = strResult.Substring(32, ExtLength); //获取包体的内容 strDatas = strResult.Substring(ExtLength + 32); //strDatas = decodedString; } catch (Exception e) { string strError = ""; strError += "\r\n strResult = " + strResult; strError += "\r\n strExtLength = " + strExtLength; DAL.Common.WriteErrorLog(e, strError); strDatas = ""; } return strDatas; } public string SocketReceiveFile(string FileName) { string result = ""; try { MemoryStream streamPacketLength = new MemoryStream(); Byte[] bytesPacketLength = new Byte[16]; clientSocket.Receive(bytesPacketLength, bytesPacketLength.Length, 0); streamPacketLength.Write(bytesPacketLength, 0, bytesPacketLength.Length); result = System.Text.Encoding.Default.GetString(streamPacketLength.ToArray()); int PacketLength = Convert.ToInt32(result); streamPacketLength.Close(); MemoryStream streamExtLength = new MemoryStream(); Byte[] bytesExtLength = new Byte[12]; clientSocket.Receive(bytesExtLength, bytesExtLength.Length, 0); streamExtLength.Write(bytesExtLength, 0, bytesExtLength.Length); result = System.Text.Encoding.Default.GetString(streamExtLength.ToArray()); int ExtLength = Convert.ToInt32(result); streamExtLength.Close(); MemoryStream streamProtocol = new MemoryStream(); Byte[] bytesProtocol = new Byte[4]; clientSocket.Receive(bytesProtocol, bytesProtocol.Length, 0); streamProtocol.Write(bytesProtocol, 0, bytesProtocol.Length); result = System.Text.Encoding.Default.GetString(streamProtocol.ToArray()); string Protocol = result; streamProtocol.Close(); MemoryStream streamExtInfo = new MemoryStream(); Byte[] bytesExtInfo = new Byte[ExtLength]; clientSocket.Receive(bytesExtInfo, bytesExtInfo.Length, 0); streamExtInfo.Write(bytesExtInfo, 0, bytesExtInfo.Length); result = System.Text.Encoding.Default.GetString(streamExtInfo.ToArray()); byte[] Buffer = Convert.FromBase64String(result); string strExtInfo = UTF8Encoding.UTF8.GetString(Buffer); streamExtInfo.Close(); MODEL.FileTrackQuery ExtInfo = new MODEL.FileTrackQuery(); ExtInfo = JsonConvert.DeserializeObject<MODEL.FileTrackQuery>(strExtInfo); if (ExtInfo.code == "00") { FileInfo fi = new FileInfo(FileName); DirectoryInfo di = fi.Directory; if (!di.Exists) { di.Create(); } FileStream streamPacketInfo = new FileStream(FileName, FileMode.Create); if (PacketLength > 0) { Byte[] bytesPacketInfo = new Byte[PacketLength]; int bytes = 0; do { bytes = clientSocket.Receive(bytesPacketInfo, bytesPacketInfo.Length, 0); streamPacketInfo.Write(bytesPacketInfo, 0, bytes); } while (bytes > 0); } streamPacketInfo.Close(); } clientSocket.Close(); string strLogFile = System.AppDomain.CurrentDomain.BaseDirectory + "debug.txt"; StreamWriter sw = new StreamWriter(strLogFile, true); sw.WriteLine("PacketLength : " + PacketLength.ToString()); sw.WriteLine("ExtLength : " + ExtLength.ToString()); sw.WriteLine("strExtInfo : " + strExtInfo); sw.WriteLine("ExtInfo.code : " + ExtInfo.code); sw.WriteLine("\n------------------------------------------------------------------------\n"); sw.Flush(); sw.Close(); } catch (Exception e) { string strError = ""; DAL.Common.WriteErrorLog(e, strError); } return result; } public string GetSocketFile(string strSend, string FileName) { string strDatas = ""; string strResult = ""; string strExtLength = ""; try { //Socket连接 SocketConnect(); //发送信息 SocketSend(strSend); //接收服务器的信息 strResult = SocketReceiveFile(FileName); //获取扩展信息的长度 //strExtLength = strResult.Substring(16, 12); //int ExtLength = Convert.ToInt32(strExtLength); //扩展信息,暂不使用 //string strExtInfo = strResult.Substring(32, ExtLength); //获取包体的内容 //strDatas = strResult.Substring(ExtLength + 32); } catch (Exception e) { string strError = ""; strError += "\r\n strResult = " + strResult; strError += "\r\n strExtLength = " + strExtLength; DAL.Common.WriteErrorLog(e, strError); strDatas = ""; } return strDatas; } public byte[] bytesReceived { get; set; } } } MODEL完整代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MODEL { public enum ClientEditionEnum { Enterprise,//企业版 Personal,//个人版 Internal,//内部版 None,//error } /// <summary> /// 授权文件内容 /// </summary> public class AuthorizeFileInfo { public string startTime { get; set; } public string expiryTime { get; set; } public string licenseID { get; set; } public string licensePassword { get; set; } public string terminalID { get; set; } public string customName { get; set; } public string customID { get; set; } public AuthorizeFileInfo() { startTime = ""; expiryTime = ""; licenseID = ""; licensePassword = ""; terminalID = ""; customName = ""; customID = ""; } } /// <summary> /// 通用返回值 /// </summary> /// public class CommonResult { public string code { get; set; } public string message { get; set; } public CommonResult() { code = ""; message = ""; } } public class EnterpriseConfirmAuthorizeDatas { public string sessionID { get; set; } public EnterpriseConfirmAuthorizeDatas() { sessionID = ""; } } /// <summary> /// 企业版授权校验接口 /// </summary> public class EnterpriseConfirmAuthorizeResult { public string code { get; set; } public string message { get; set; } public EnterpriseConfirmAuthorizeDatas datas { get; set; } public EnterpriseConfirmAuthorizeResult() { code = ""; message = ""; datas = new EnterpriseConfirmAuthorizeDatas(); } } public class PersonalConfirmAuthorizeDatas { public string sessionID { get; set; } public string licenseInfo { get; set; } public PersonalConfirmAuthorizeDatas() { sessionID = ""; licenseInfo = ""; } } /// <summary> /// 个人版授权校验接口 /// </summary> public class PersonalConfirmAuthorizeResult { public string code { get; set; } public string message { get; set; } public PersonalConfirmAuthorizeDatas datas { get; set; } public PersonalConfirmAuthorizeResult() { code = ""; message = ""; datas = new PersonalConfirmAuthorizeDatas(); } } /// <summary> /// 鉴权信息,每次调用安全接口时使用 /// </summary> public class LicInfo { public string licenseID { get; set; } public string licensePassword { get; set; } public string terminalID { get; set; } public string deviceID { get; set; } public string sessionID { get; set; } public LicInfo() { licenseID = ""; licensePassword = ""; terminalID = ""; deviceID = ""; sessionID = ""; } } /// <summary> /// java引擎的参数 /// </summary> public class JavaEngineArg { public string licenseID { get; set; } public string licensePassword { get; set; } public string terminalID { get; set; } public string customName { get; set; } public string customID { get; set; } public string deviceID { get; set; } public JavaEngineArg() { licenseID = ""; licensePassword = ""; terminalID = ""; customName = ""; customID = ""; deviceID = ""; } } /// <summary> /// 用户登录接口(一),非安全接口 /// </summary> /// public class UserInfoUnSafe { public string userID { get; set; } public string userName { get; set; } public string departmentName { get; set; } public UserInfoUnSafe() { userID = ""; userName = ""; departmentName = ""; } } public class UserLoginUnSafe { public string code { get; set; } public string message { get; set; } public UserInfoUnSafe datas { get; set; } public UserLoginUnSafe() { code = ""; message = ""; datas = new UserInfoUnSafe(); } } /// <summary> /// 个人版用户登录接口,非安全接口 /// </summary> /// public class UserInfoForPersonal { public string userID { get; set; } public string userName { get; set; } public string departmentName { get; set; } public string licenseInfo { get; set; } public UserInfoForPersonal() { userID = ""; userName = ""; departmentName = ""; licenseInfo = ""; } } public class UserLoginForPersonal { public string code { get; set; } public string message { get; set; } public UserInfoForPersonal datas { get; set; } public UserLoginForPersonal() { code = ""; message = ""; datas = new UserInfoForPersonal(); } } /// <summary> /// 用户登录接口(二),安全接口 /// </summary> /// public class UserInfoSafe { public string userSessionID { get; set; } public string userID { get; set; } public string userName { get; set; } public string departmentName { get; set; } public string activeTime { get; set; } public UserInfoSafe() { userSessionID = ""; userID = ""; userName = ""; departmentName = ""; activeTime = ""; } } public class UserLoginSafe { public string code { get; set; } public string message { get; set; } public UserInfoSafe datas { get; set; } public UserLoginSafe() { code = ""; message = ""; datas = new UserInfoSafe(); } } /// <summary> /// 更新检查接口 /// </summary> /// public class SingleVersion { public string softID { get; set; } public int version { get; set; } public SingleVersion() { softID = ""; version = new int(); } } public class Versions { public List<SingleVersion> versions { get; set; } public Versions() { versions = new List<SingleVersion>(); } } public class VersionUpdate { public string softID { get; set; } public int version { get; set; } public string url { get; set; } public VersionUpdate() { softID = ""; version = new int(); url = ""; } } public class VersionCheck { public string code { get; set; } public string message { get; set; } public List<VersionUpdate> datas { get; set; } public VersionCheck() { code = ""; message = ""; datas = new List<VersionUpdate>(); } } /// <summary> /// 数据源信息查询接口 /// </summary> /// public class OptInfoQuery { public string createUserID { get; set; } public string createUserName { get; set; } public string createUserTime { get; set; } public OptInfoQuery() { createUserID = ""; createUserName = ""; createUserTime = ""; } } public class Period { public int cycle { get; set; } public int cycleUnit { get; set; } public string timer { get; set; } public Period() { cycle = 1; cycleUnit = 1; timer = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); } } public class StrategyConfig { public int backType { get; set; } public int taskType { get; set; } public Period config { get; set; } public StrategyConfig() { backType = 0; taskType = 1; config = new Period(); } } public class FilterFileSuffix { public string suffix { get; set; } public FilterFileSuffix() { suffix = ""; } } public class Scan { public int scanType { get; set; } public string root { get; set; } public bool scanHideFile { get; set; } public string verifyCompleteName { get; set; } public int verifyCompleteMaxCount { get; set; } public int verifyCompleteTimer { get; set; } public string fileAttrGainer { get; set; } public bool recordCanNotReadFileInfo { get; set; } public bool recordEmptyDirectory { get; set; } public bool recordEmptyFile { get; set; } public List<FilterFileSuffix> filterFileSuffix { get; set; } public Scan() { scanType = 2; root = ""; scanHideFile = false; verifyCompleteName = ""; verifyCompleteMaxCount = 5; verifyCompleteTimer = 10000; fileAttrGainer = "null"; recordCanNotReadFileInfo = false; recordEmptyDirectory = false; recordEmptyFile = false; filterFileSuffix = new List<FilterFileSuffix>(); } } public class DataSourceConfigQuery { public int status { get; set; } public int dataSourceType { get; set; } public string dataSourceID { get; set; } public string dataSourceName { get; set; } public string dataSourceDescription { get; set; } public Scan config { get; set; } public DataSourceConfigQuery() { status = 0; dataSourceType = 0; dataSourceID = ""; dataSourceName = ""; dataSourceDescription = ""; config = new Scan(); } } public class DatasQuery { public OptInfoQuery optInfo { get; set; } public StrategyConfig strategyConfig { get; set; } public DataSourceConfigQuery dataSourceConfig { get; set; } public DatasQuery() { optInfo = new OptInfoQuery(); strategyConfig = new StrategyConfig(); dataSourceConfig = new DataSourceConfigQuery(); } } public class DataSourceInfoQuery { public string code { get; set; } public string message { get; set; } public List<DatasQuery> datas { get; set; } public DataSourceInfoQuery() { code = ""; message = ""; datas = new List<DatasQuery>(); } } public class WebSite { public string ExpirationTime { get; set; } public string WebSiteSpace { get; set; } public bool DataBaseEnable { get; set; } public string DataBaseUserName { get; set; } public string DataBasePassword { get; set; } public string DataBaseMark { get; set; } public string WebSiteAdmin { get; set; } public string WebSitePassword { get; set; } public WebSite() { ExpirationTime = ""; WebSiteSpace = ""; DataBaseEnable = false; DataBaseUserName = ""; DataBasePassword = ""; DataBaseMark = ""; WebSiteAdmin = ""; WebSitePassword = ""; } } public class WebSiteDatasQuery { public OptInfoQuery optInfo { get; set; } public StrategyConfig strategyConfig { get; set; } public DataSourceConfigQuery dataSourceConfig { get; set; } public WebSite webSiteConfig { get; set; } public WebSiteDatasQuery() { optInfo = new OptInfoQuery(); strategyConfig = new StrategyConfig(); dataSourceConfig = new DataSourceConfigQuery(); webSiteConfig = new WebSite(); } } public class WebSiteDataSourceInfoQuery { public string code { get; set; } public string message { get; set; } public List<WebSiteDatasQuery> datas { get; set; } public WebSiteDataSourceInfoQuery() { code = ""; message = ""; datas = new List<WebSiteDatasQuery>(); } } /// <summary> /// 新增数据源接口 /// </summary> /// public class OptInfoNew { public bool forceFlag { get; set; } public OptInfoNew() { forceFlag = true; } } public class DataSourceConfigNew { public int dataSourceType { get; set; } public string dataSourceName { get; set; } public string dataSourceDescription { get; set; } public Scan config { get; set; } public DataSourceConfigNew() { dataSourceType = 0; dataSourceName = ""; dataSourceDescription = ""; config = new Scan(); } } public class DataSourceNew { public OptInfoNew optInfo { get; set; } public StrategyConfig strategyConfig { get; set; } public DataSourceConfigNew dataSourceConfig { get; set; } public DataSourceNew() { optInfo = new OptInfoNew(); strategyConfig = new StrategyConfig(); dataSourceConfig = new DataSourceConfigNew(); } } /// <summary> /// 修改数据源接口 /// </summary> /// public class DataSourceModify { public StrategyConfig strategyConfig { get; set; } public DataSourceConfigQuery dataSourceConfig { get; set; } public DataSourceModify() { strategyConfig = new StrategyConfig(); dataSourceConfig = new DataSourceConfigQuery(); } } /// <summary> /// 停用/启用数据源接口 /// </summary> /// public class DataSourceStatus { public string dataSourceID { get; set; } public int optType { get; set; } public DataSourceStatus() { dataSourceID = ""; optType = new int(); } } /// <summary> /// 数据源数据,仅用于存放数据 /// </summary> /// public class DataSourceData { public List<DatasQuery> datas { get; set; } public DataSourceData() { datas = new List<DatasQuery>(); } } /// <summary> /// WebSite数据源数据,仅用于存放数据 /// </summary> /// public class WebSiteDataSourceData { public List<WebSiteDatasQuery> datas { get; set; } public WebSiteDataSourceData() { datas = new List<WebSiteDatasQuery>(); } } /// <summary> /// 文件恢复,版本查询 /// </summary> /// public class DataSourceVersionArg { // 通讯令牌 public string secretKey { get; set; }//由token进过MD5->BASE64->MD5获得 // 任务令牌 public string token { get; set; }//客户端生成一个UUID // 前置机编号 public string terminalId { get; set; } // 操作用户编号 public string optUserID { get; set; } public DataSourceVersionArg() { secretKey = ""; token = ""; terminalId = ""; optUserID = ""; } } public class FileVersions { public int file_count { get; set; } public long space_size { get; set; } public string task_id { get; set; } public string task_time { get; set; } public int total_count { get; set; } public string version { get; set; } public FileVersions() { file_count = new int(); space_size = new long(); task_id = ""; task_time = ""; total_count = new int(); version = ""; } } public class DataSourceVersion { public Scan datasourceConfig { get; set; } public string datasourceId { get; set; } public string datasourceName { get; set; } public int datasourceStatus { get; set; } public int datasourceType { get; set; } public List<FileVersions> versions { get; set; } public DataSourceVersion() { datasourceConfig = new Scan(); datasourceId = ""; datasourceName = ""; datasourceStatus = new int(); datasourceType = new int(); versions = new List<FileVersions>(); } } /// <summary> /// 查询数据源接口 /// </summary> public class DataSourceVersionQuery { public string code { get; set; } public string message { get; set; } public List<DataSourceVersion> datas { get; set; } public DataSourceVersionQuery() { code = ""; message = ""; datas = new List<DataSourceVersion>(); } } /// <summary> /// 数据源版本信息 /// </summary> public class DataSourceVersionDatas { public List<DataSourceVersion> datas { get; set; } public DataSourceVersionDatas() { datas = new List<DataSourceVersion>(); } } /// <summary> /// 文件恢复,文件信息查询 /// </summary> /// public class QueryFileInfoArg { // 通讯令牌 public string secretKey { get; set; }//由token进过MD5->BASE64->MD5获得 // 任务令牌 public string token { get; set; }//客户端生成一个UUID // 数据源编号 public string datasourceId { get; set; } // 操作用户编号 public string optUserID { get; set; } // 目录文件编号--如果为根目录使用 DS_ROOT public string fileID { get; set; } // 查询的版本编号 如果是综合分析 这个字段设置为 ALL public string taskID { get; set; } public QueryFileInfoArg() { secretKey = ""; token = ""; datasourceId = ""; optUserID = ""; fileID = ""; taskID = ""; } } public class FileInfoCondition { public string datasourceId { get; set; } public string parentId { get; set; } public string taskID { get; set; } public FileInfoCondition() { datasourceId = ""; parentId = ""; taskID = ""; } } public class FileInfo { // 文件唯一编号 public string file_id { get; set; } // 源相对目录 public string file_src_path { get; set; } // 文件名 public string file_name { get; set; } // 文件后缀 public string file_suffix { get; set; } // 是否为文件 public bool is_file { get; set; } // 上级文件编号 public string parent_id { get; set; } // 是否删除 public bool is_del { get; set; } // 是否隐藏 public bool is_hide { get; set; } // 文件大小 public int size { get; set; } // 文件创建时间 public string create_time { get; set; } // 文件创建人 public string create_user { get; set; } // 文件最后修改时间 public string lm_time { get; set; } // 文件最后修改人 public string lm_user { get; set; } // 是否可读 public bool can_read { get; set; } public FileInfo() { file_id = ""; file_src_path = ""; file_name = ""; file_suffix = ""; is_file = new bool(); parent_id = ""; is_del = new bool(); is_hide = new bool(); size = new int(); create_time = ""; create_user = ""; lm_time = ""; lm_user = ""; can_read = new bool(); } } public class FileInfoAndCondition { public FileInfoCondition condition { get; set; } public List<FileInfo> fileInfos { get; set; } public FileInfoAndCondition() { condition = new FileInfoCondition(); fileInfos = new List<FileInfo>(); } } /// <summary> /// 查询文件信息接口 /// </summary> public class FileInfoQuery { public string code { get; set; } public string message { get; set; } public FileInfoAndCondition datas { get; set; } public FileInfoQuery() { code = ""; message = ""; datas = new FileInfoAndCondition(); } } /// <summary> /// 文件信息 /// </summary> public class FileInfoData { public List<FileInfo> datas { get; set; } public FileInfoData() { datas = new List<FileInfo>(); } } public class QueryFileTrackArg { // 通讯令牌 public string secretKey { get; set; }//由token进过MD5->BASE64->MD5获得 // 任务令牌 public string token { get; set; }//客户端生成一个UUID // 文件编号 public string fileID { get; set; } // 操作用户编号 public string optUserID { get; set; } // 查询的版本编号 public string taskID { get; set; } public QueryFileTrackArg() { secretKey = ""; token = ""; fileID = ""; optUserID = ""; taskID = ""; } } public class FileTrack { // 文件操作 public string act_cmd { get; set; } // 是否可读 public bool can_read { get; set; } // 文件创建时间 public string create_time { get; set; } // 文件创建人 public string create_user { get; set; } // 是否删除 public bool is_del { get; set; } // 是否隐藏 public bool is_hide { get; set; } // 文件最后修改时间 public string lm_time { get; set; } // 文件最后修改人 public string lm_user { get; set; } // 文件大小 public int size { get; set; } public string taskID { get; set; } public FileTrack() { act_cmd = ""; can_read = new bool(); create_time = ""; create_user = ""; is_del = new bool(); is_hide = new bool(); lm_time = ""; lm_user = ""; size = new int(); taskID = ""; } } public class FileTrackCondition { public string fileID { get; set; } public string taskID { get; set; } public FileTrackCondition() { fileID = ""; taskID = ""; } } /// <summary> /// 查询文件轨迹接口 /// </summary> public class FileTrackQuery { public string code { get; set; } public string message { get; set; } public FileTrackCondition condition { get; set; } public List<FileTrack> datas { get; set; } public FileTrackQuery() { code = ""; message = ""; condition = new FileTrackCondition(); datas = new List<FileTrack>(); } } /// <summary> /// 文件轨迹 /// </summary> public class FileTrackData { public List<FileTrack> datas { get; set; } public FileTrackData() { datas = new List<FileTrack>(); } } /// <summary> /// 字典item /// </summary> public class DictionaryData { public string version { get; set; } public string task_time { get; set; } public DictionaryData() { version = ""; task_time = ""; } } public class FileRecoverArg { // 通讯令牌 public string secretKey { get; set; }//由token进过MD5->BASE64->MD5获得 // 任务令牌 public string token { get; set; }//客户端生成一个UUID // 操作用户编号 public string optUserID { get; set; } public string fileID { get; set; } public string taskID { get; set; } public string password { get; set; } public FileRecoverArg() { secretKey = ""; token = ""; optUserID = ""; fileID = ""; taskID = ""; password = ""; } } }
怎样解决C语言TXT文本输入数据时的空格问题?
**题目如下:** 1到40,一共四十个数,输入时一行不超过12个数,不超过10行,筛选出现一次的数字,出现两次的数字,三次及三次以上的数字,出现零次的数字,要求用TXT文本输入,输出。 **遇到的问题:**输入数据后,发现结果错误。仔细查找发现,每行数据后会发现几个空格,![图片说明](https://img-ask.csdn.net/upload/201501/13/1421143508_225855.png),导致了只有第一行数据能够读入。笔者试过多次,发现貌似只有这一种空格形式会对结果造成影响,其他的情况,添加很多空格也不会有事。笔者咨询前辈,说可能由于中文或者英文状态下的原因,笔者试过两种状态下输入原数据的空格,发现均输出错误结果。现在比较迷惑,不知如何改进(其实用基本能用了),还请各位大神帮帮忙,也希望大家能对我的算法提出改进意见! **代码如下:** #include<stdio.h> #include<stdlib.h> #define S 120 #define T 40 #define I 1 int main() { FILE*fp1; FILE*fp2=fopen("output.txt","w"); int num1[S],num2[T],num3[T],num4[T],num5[T],num6[T],i,j=0,k=0,a=0,b=0,c=0,d=0,m,n; if((fp1=fopen("input.txt","r"))==NULL) { printf("无法打开文件\n"); exit(0); } for(i=I;i<=T;i++) num2[j++]=i;//将1至40赋给num2数组各元素 for(i=0;i<S;i++) fscanf(fp1,"%d",&num1[i]);//从文件中读出120个的数据,并存入num1数组 fclose(fp1); for(i=0;i<T;i++) { for(j=0;j<S;j++) if(num1[j]==num2[i])k++;//比较 if(k==0) num3[a++]=num2[i]; else if(k==1) num4[b++]=num2[i]; else if(k==2) num5[c++]=num2[i]; else if(k>3||k==3) num6[d++]=num2[i]; k=0; } fprintf(fp2,"出现过零次的数字是:"); for(m=0;m<a;m++) fprintf(fp2,"%3d",num3[m]); fprintf(fp2,"\n"); fprintf(fp2,"出现过一次的数字是:"); for(m=0;m<b;m++) fprintf(fp2,"%3d",num4[m]); fprintf(fp2,"\n"); fprintf(fp2,"出现过两次的数字是:"); for(m=0;m<c;m++) fprintf(fp2,"%3d",num5[m]); fprintf(fp2,"\n"); fprintf(fp2,"出现过三次或三次以上的数字是:"); for(m=0;m<d;m++) fprintf(fp2,"%3d",num6[m]); fprintf(fp2,"\n"); fclose(fp2); return 0; }
小白求教这段C++代码有什么问题。关于将数据从txt中读出又在新的txt中写入新的数据的问题
这是我们老师布置的作业,指明要用自定义结构体数组做,已经做了一下午了,是在走投无路了,求各位大神指点。 题目要求如下 从文本文件student.txt读入存放于该文件中的学生数据(学号、姓名、总分),建立成绩排行榜(学号、姓名、总分、名次)(用结构数组或向量表示之),按总分从高到低排序,名次字段的值在排序后写入; 代码如下: #include <iostream> #include <fstream> #include <string> using namespace std; struct Studentrank { string num; string name; int score; int rank; }; int main() { int i=0; Studentrank temp; int student=0; Student st[4]; ifstream in("G://C++//1.txt"); if(!in) { cerr << "open error!" << endl; exit(1); } while(!in.eof()) { in>>st[i].num>>st[i].score>>st[i].rank; i++; student++; } for(int j=0;j<4;j++) { for(int a=0;a<j-a;a++) if (st[j].score>st[j+1].score) { temp=st[j]; st[j]=st[j+1]; st[j+1]=temp; } } ofstream out("G://C++//2"); for(int c=0;c<4;c++ { st[c].rank=c+1 } out<<st[c].rank; return 0; } 特别是写人数据到TXT那一部分,以前没有接触过,看网上的资料也不是太懂。拜托各位
如何将多个txt文本合并在一个文本里面并且完全打乱行序
我现在有几个个txt文件,每个文件里面都是一行一行的数据,单个文件差不多1G, 我现在想把他们合并在一个txt文件中,并且打乱他们的行序,我原本想各个文件先读取几行,放在一个数组里面打乱写入新的文本,接着在读取这些文件接下来的几行,还是合并打乱写入,知道全部读完,但是我不知道怎么去控制这个每次读取那些行
救救孩子吧!如何解决读取txt文件出现索引超出了数组的范围的问题
#include<stdio.h> #include<stdlib.h> void main() { typedef struct LNode { char name[6]; int no; int yw; int sx; int yy; struct LNode* next; }LinkList; struct NameNo { int no; int yw; int sx; int total; char name[6]; }st[10]; FILE* fp, * fp1; char ch, sname[6]; int x, i, j; NameNo tmp; LinkList* p, * s; printf("\n"); printf("-------------------------------"); printf("学生成绩管理系统"); printf("--------------------------------"); printf("\n\n"); printf("在您的C盘根目录下是否有cj1.txt和cj2.txt文件?如果有请输入1,"); printf("否则输入0;如果没有,那么程序将终止!1 or 0?"); scanf("%d", &i); if (i == 0) return; printf("\n\n"); printf("对cj1.txt和cj2.txt进行合成请按''"); scanf("%d", &i); if (i != 1) return; printf("正在把cj1.txt和cj2.txt中的数据进行合并\n"); printf("......\n.....\n....\n...\n..\n.\n"); if ((fp = fopen("c:\\cj1.txt", "rt")) == NULL) //从文本文件cj1.txt中读取数据传向cj3.txt { printf("无cj1.txt文本文件,程序结束。\n"); return; } fp1 = fopen("c:\\cj3.txt", "wt"); ch = fgetc(fp); while (ch != EOF) { fputc(ch, fp1); ch = fgetc(fp); } fclose(fp1); fclose(fp); if ((fp = fopen("c:\\cj2.txt", "rt")) == NULL) //从文本文件cj2.txt中读取数据接到cj3.txt的后面 { printf("无cj12.txt文本文件,程序结束。\n"); return; } fp1 = fopen("c:\\cj3.txt", "a"); for (i = 0; i < 37; i++) fgetc(fp); ch = fgetc(fp); while (ch != EOF) { fputc(ch, fp1); ch = fgetc(fp); } fclose(fp1); fclose(fp); printf("合并成功!现在你可以在C盘根目录下看到一个cj3.txt文件\n"); printf("\n\n"); p = (LinkList*)malloc(sizeof(LinkList)); p->next = NULL; fp = fopen("c:\\cj3.txt", "rt");//从合成后的cj3.txt读取数据,生成链表 for (i = 0; i < 36; i++) fgetc(fp); ch = fgetc(fp); while (ch != EOF) { s = (LinkList*)malloc(sizeof(LinkList)); fgets(s->name, 6, fp); for (i = 0; i < 5; i++) fgetc(fp); x = fgetc(fp) - 48; x = x * 10 + fgetc(fp) - 48; s->no = x; for (i = 0; i < 5; i++) fgetc(fp); x = fgetc(fp) - 48; x = x * 10 + fgetc(fp) - 48; s->yw = x; for (i = 0; i < 5; i++) fgetc(fp); x = fgetc(fp) - 48; x = x * 10 + fgetc(fp) - 48; s->sx = x; for (i = 0; i < 5; i++) fgetc(fp); x = fgetc(fp) - 48; x = x * 10 + fgetc(fp) - 48; s->yy = x; s->next = p->next; p->next = s; ch = fgetc(fp); } fclose(fp); printf("对cj3.txt中有不及格的学生信息生成cj4.txt请按''"); scanf("%d", &i); if (i != 1) return; printf("正在生成cj4.txt\n"); printf("......\n.....\n....\n...\n..\n.\n"); if (i == 1) fp = fopen("c:\\cj4.txt", "wt");//把三科成绩中有补考的学生信息放入cj4.txt fputs("姓 名 学号 语文 数学 英语", fp); fclose(fp); fp = fopen("c:\\cj4.txt", "a"); s = p->next; while (s != NULL) { if (s->yw < 60 || s->sx < 60 || s->yy < 60) { ch = '\n'; fputc(ch, fp); fputs(s->name, fp); for (i = 0; i < 5; i++) { ch = ' '; fputc(ch, fp); } ch = s->no / 10 + 48; fputc(ch, fp); ch = s->no - (s->no / 10) * 10 + 48; fputc(ch, fp); for (i = 0; i < 5; i++) { ch = ' '; fputc(ch, fp); } ch = s->yw / 10 + 48; fputc(ch, fp); ch = s->yw - (s->yw / 10) * 10 + 48; fputc(ch, fp); for (i = 0; i < 5; i++) { ch = ' '; fputc(ch, fp); } ch = s->sx / 10 + 48; fputc(ch, fp); ch = s->sx - (s->sx / 10) * 10 + 48; fputc(ch, fp); for (i = 0; i < 5; i++) { ch = ' '; fputc(ch, fp); } ch = s->yy / 10 + 48; fputc(ch, fp); ch = s->yy - (s->yy / 10) * 10 + 48; fputc(ch, fp); s = s->next; } else s = s->next; } fclose(fp); printf("生成成功!现在你可以在C盘根目录下看到一个cj4.txt文件"); printf("\n\n"); s = p->next;//将学生信息从链表复制到数组中 for (i = 0; i < 10; i++) { st[i].no = s->no; st[i].yw = s->yw; st[i].sx = s->sx; st[i].total = s->yw + s->sx + s->yy; for (j = 0; j < 7; j++) st[i].name[j] = s->name[j]; s = s->next; } printf("用直接插入法排序请按'':"); scanf("%d", &i); printf("\n\n"); if (i == 1) { for (i = 1; i < 10; i++)//直接插入法排序 { tmp = st[i]; j = i - 1; while (j >= 0 && tmp.total > st[j].total) { st[j + 1] = st[j]; j--; } st[j + 1] = tmp; } printf(" 直接插入法排序后总分从大到小排序为\n"); printf("\n\n"); printf("姓 名 学号 语文 数学 英语 总分\n"); for (i = 0; i < 10; i++) { if (st[i].no < 10) { printf("%s ", st[i].name); printf("%d", 0); printf("%d ", st[i].no); printf("%d ", st[i].yw); printf("%d ", st[i].sx); printf("%d ", st[i].total - st[i].yw - st[i].sx); printf("%d\n", st[i].total); printf("\n"); } else { printf("%s ", st[i].name); printf("%d ", st[i].no); printf("%d ", st[i].yw); printf("%d ", st[i].sx); printf("%d ", st[i].total - st[i].yw - st[i].sx); printf("%d\n", st[i].total); printf("\n"); } } } printf("将排好序的数组打乱\n"); printf("\n"); s = p->next;//将排好序的数组打乱,从新用冒泡法排序 for (i = 0; i < 10; i++) { st[i].no = s->no; st[i].yw = s->yw; st[i].sx = s->sx; st[i].total = s->yw + s->sx + s->yy; for (j = 0; j < 7; j++) st[i].name[j] = s->name[j]; s = s->next; } printf("用冒泡法排序请按'':"); scanf("%d", &i); printf("\n\n"); if (i == 1) { for (i = 0; i < 9; i++)//冒泡法排序 { for (j = 9; j > i; j--) if (st[j].total > st[j - 1].total) { tmp = st[j]; st[j] = st[j - 1]; st[j - 1] = tmp; } } printf(" 冒泡法排序后总分从大到小排序为\n"); printf("\n\n"); printf("姓 名 学号 语文 数学 英语 总分\n"); for (i = 0; i < 10; i++) { if (st[i].no < 10) { printf("%s ", st[i].name); printf("%d", 0); printf("%d ", st[i].no); printf("%d ", st[i].yw); printf("%d ", st[i].sx); printf("%d ", st[i].total - st[i].yw - st[i].sx); printf("%d\n", st[i].total); printf("\n"); } else { printf("%s ", st[i].name); printf("%d ", st[i].no); printf("%d ", st[i].yw); printf("%d ", st[i].sx); printf("%d ", st[i].total - st[i].yw - st[i].sx); printf("%d\n", st[i].total); printf("\n"); } } } printf("\n"); printf("请输入你要查找的学生姓名:(注意:如果名字为两个字,则中间用两个空格!)\n"); do { x = 1; if (i == 1) printf("输入姓名:"); getchar(); for (i = 0; i < 7; i++) sname[i] = getchar(); for (i = 0; i < 10; i++)//在数组中顺序查找 { for (j = 0; st[i].name[j] == sname[j]; j++) {} if (j == 6) { printf(" 数组中查找结果"); printf("\n\n"); printf("姓 名 学号 语文 数学 英语 总分\n"); printf("%s", st[i].name); printf(" %d", st[i].no); printf(" %d", st[i].yw); printf(" %d", st[i].sx); printf(" %d", st[i].total - st[i].yw - st[i].sx); printf(" %d\n\n", st[i].total); x = 0; } } if (x != 0) printf(" 查无此人!\n"); s = p->next; while (s != NULL)//在链表中顺序查找 { for (i = 0; s->name[i] == sname[i]; i++) {} if (i == 6) { printf(" 链表中查找结果"); printf("\n\n"); printf("姓 名 学号 语文 数学 英语 总分\n"); printf("%s", s->name); printf(" %d", s->no); printf(" %d", s->yw); printf(" %d", s->sx); printf(" %d", s->yy); printf(" %d\n\n", s->yw + s->sx + s->yy); x = 0; } s = s->next; } if (x != 0) printf(" 查无此人!\n"); i = 0; printf("继续查找请按''"); scanf("%d", &i); } while (i == 1); printf("\n\n"); printf("-----------------------------谢谢使用!--------------------------------\n\n"); } 请问如何解决索引超出了数组的范围这一问题 现有学生成绩信息文件1(1.txt),内容如下 姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47 学生成绩信息文件2(2.txt),内容如下: 姓名 学号 语文 数学 英语 陈果 31 57 68 82 李华明 32 88 90 68 张明东 33 48 42 56 李明国 34 50 45 87 陈道亮 35 47 58 77 …. .. .. .. … ![图片说明](https://img-ask.csdn.net/upload/201912/22/1577019414_694126.png)
C++ 中怎样控制数据输出精度?
# 代码很简单如下: ofstream outfile("C:\\Users\\Song\\Desktop\\20171106\\final.txt", ios::in | ios::out | ios::binary); for (int b = 1; b < 257; b++) { outfile << y[b] << ""; } outfile.close(); **我的问题是:** 数组y内显示8.7391425897412365e19,输出到TXT文件内以后变成了8.73914e-019,想问一下怎样才能控制输出到tXT的精度?
读取串口数据添加了一个TimeoutException异常处理方法,出现了dll异常
报错信息: 在 System.TimeoutException中第一次偶然出现的"System.dll"类型异常。 之后程序就不在接收数据了,也不出现程序报错,必须重新启动程序,才能继续接收数据。 错误一般会在程序运行1天之后出现假死现象。是不是因为我只是把错误信息记下来了,并没有进行错误处理?我的逻辑是,错误之后,丢弃这一组数据,然后重新进行数据接收。 跪求,本人无法解觉了现在。 相关代码: //开始接收 public void StartReceive() { int temp = 0; while (true) { try { temp = sp.ReadByte(); } catch (TimeoutException ex) { LogTool.WriteEduAppLog(ex.Message, ex.StackTrace); } } //将报错相关信息写入本地的log文档 public class LogTool { //当前程序的日志文件目录 static string strAppLofDir = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "logInfo.txt"; public static void WriteEduAppLog(string ErrorReason, string StackTrace) { WriteLog(ErrorReason, StackTrace, "EduApp.log"); } private static void WriteLog(string ErrorReason, string StackTrace, string logFileName) { //判断有没有日志目录,没有就创建 DirectoryInfo directoryInfo = new DirectoryInfo(strAppLofDir); if (!directoryInfo.Exists) directoryInfo.Create(); StringBuilder logInfo = new StringBuilder(""); string currentTime = System.DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss]"); logInfo.Append("\n").Append(currentTime).Append(":").Append(ErrorReason).Append("\n").Append(StackTrace); System.IO.File.AppendAllText(strAppLofDir + logFileName, logInfo.ToString()); } }
C语言中,如何将读取的16进制txt文件转化为10进制数组?
我读取到的的16进制数 0, 0, 6b6, 6a5, 695, 685, 67e, 663, 662, 652, 648, 640, 62e, 628, 616, 612, 604, 5f7, 5ed, 5df,是这样的600个数据,我写的代码如下,可为什么转化的是错的,请大神们帮忙看一下。 #include<stdio.h> #include <ctype.h> #include<stdlib.h> #include <string.h> #include<math.h> #define N 600 int main() { char szTest[1000] = {0}; int len = 0; FILE *fp = fopen("data25.txt", "r"); if(NULL == fp) { printf("failed to open dos.txt\n"); return 1; } while(!feof(fp)) { memset(szTest, 0, sizeof(szTest)); fgets(szTest, sizeof(szTest) - 1, fp); // 包含了\n int t=strlen(szTest); long sum=0; for(int i=0;i<t;i++){ if(szTest[i]>='a' && szTest[i]<='z') szTest[i]=int(szTest[i]-'a')+10+'0'; sum+=((szTest[i]-'0')*(pow(16,t-1-i))); sum1[]=sum; } printf("%ld\n",sum); } fclose(fp); printf("\n"); return 0; } /*unsigned convert(char szTest[]) { unsigned i,num = 0; for(i = 0;szTest[i];++i) { szTest[i] = toupper(szTest[i]); //* 小写字母转换成大写,其他字符不变 * if(isalpha(szTest[i])) num += 16 * num + szTest[i] - 'A'; else num += 16 * num + szTest[i] - '0'; } return num; } */
c++,二位数组输入和输出不符
如题,小范围输入没问题,大范围输入输出就不一样了。 ``` #include<iostream> #include<cstdio> using namespace std; int a[2010][2010],b=0,c,d[20][20]; int main(){ //freopen("in.txt","r",stdin); //打开文件 //freopen("out.txt","w",stdout); //打开文件 int n; cin>>n; for(int i=0;i<n;i++){ for(int j=0;j<n;j++) cin>>a[i][j]; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cout<<a[i][j]<<" "; } cout<<endl; } //fclose(stdin); //关文件 //fclose(stdout); //关文件 return 0; } ``` 测试数据 http://otxkng4mb.bkt.clouddn.com/in.txt
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
C语言荣获2019年度最佳编程语言
关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang近日,TIOBE官方发布了2020年1月编程语言排行榜单。我在前面给过一篇文章《2019年11月C语言接近Ja...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
立即提问