1 # include <stdio.h>
2 # include <stdlib.h>
3 # include <time.h>
4 # include <string.h>
5 int main ()
6 {
7 int _rand (int x);
8 int z,m;
9 char p;
10
11 char *q[100]={0};
12
13 int a[100];
14 FILE *fp = fopen ("name.txt","a+");
15 if (fp == NULL)
16 {
17 printf ("文件打开失败");
18 exit(1);
19 }
20 p = getc (fp);
21 if (p == EOF)
22 {
23 fseek (fp,0l,SEEK_SET);
24 z = 0;
25 printf ("文件中没有数据,或者数据没有按照规定格式输入!\n请输入:");
26 printf ("输入格式为n,姓名(ps:ctrl+z结束输入)\n");
27 while (scanf ("%d %s",&a[z],*q+z) != EOF)
28 {
29 fprintf (fp,"%d %s\n",a[z],*q+z);
30 z++;
31 }
32 }
33 else
34 {
35 fseek (fp,0l,SEEK_SET);
36 z = 0;
37 q[z]=(char *)malloc(100);
38 while (EOF != fscanf (fp,"%d %s",&a[z],q[z]))
39 {
40
41 printf ("%d %s\n",a[z],q[z]);
42 z++;
43 q[z]=(char *)malloc(100);
44 }
45 }
46 for (m = 0;m < z;m++)
47 {
48 printf ("%d %s\n",a[m],q[m]);
49 }
50 for (m = 0;m < z;m++)
51 {
52 free(q[m]);
53 }
54
55 m = _rand (z);
56 //printf ("%d %s",a[m],q+m);
57 }
58 int _rand (int x)
59 {
60 int a = 0;
61 srand (time(NULL));
62 srand (rand());
63 a = (rand()%x);
64 printf ("%d ",a);
65 return a;
66 }
name.txt
1 不是你
2 还是你
3 到底是不是你
 1 # include <stdio.h>
2 # include <stdlib.h>
3 # include <time.h>
4 # include <string.h>
5 int main ()
6 {
7 int _rand (int x);
8 int z,m;
9 char p;
10
11 char q[20][100];
12 int a[100];
13 FILE *fp = fopen ("name.txt","a+");
14 if (fp == NULL)
15 {
16 printf ("文件打开失败");
17 exit(1);
18 }
19 p = getc (fp);
20 if (p == EOF)
21 {
22 fseek (fp,0l,SEEK_SET);
23 z = 0;
24 printf ("文件中没有数据,或者数据没有按照规定格式输入!\n请输入:");
25 printf ("输入格式为n,姓名(ps:ctrl+z结束输入)\n");
26 while (scanf ("%d %s",&a[z],q+z) != EOF)
27 {
28 fprintf (fp,"%d %s\n",a[z],q+z);
29 z++;
30 }
31 }
32 else
33 {
34 fseek (fp,0l,SEEK_SET);
35 z = 0;
36 while(!feof(fp))
37 {
38 fscanf (fp,"%d %s",&a[z],q+z);
39 z++;
40 }
41 /*while (EOF != fscanf (fp,"%d %s",&a[z],q+z))
42 {
43 printf ("%d %s\n",a[z],q+z);
44 z++;
45 }*/
46 }
47 for (m = 0;m < z;m++)
48 {
49 printf ("%d %s\n",a[m],q+m);
50 }
51 m = _rand (z);
52 //printf ("%d %s",a[m],q+m);
53 }
54 int _rand (int x)
55 {
56 int a = 0;
57 srand (time(NULL));
58 srand (rand());
59 a = (rand()%x);
60 printf ("%d ",a);
61 return a;
62 }
name.txt
1 不是你
2 还是你
3 到底是不是你
指针地址都是由操作系统分配的,不可以自己随意制定。
先用malloc函数分配一个足够大的内存空间,然后用scanf函数输入内容,不用这些空间后最好用free函数释放。部分代码
#include <stdlib.h> /* 使用malloc和free函数需要这个头文件 */
char *a[3];
a[0]=(char *)malloc(100); /* 算上结尾的\0,不超过100个字符 */
scanf("%s", a[0]);
free(a[0]); /* 使用解释后释放 */
C语言教材讲指针的部分有讲解。
*****************************
利用指针数组对字符串排序的程序如下:
void SortString(int n, char *str[])
{
char *c;
int i,j;
for(i=0;i<=n-2;i++)
for(j=0;j<=n-2-i;j++)
{
if(strcmp(str[j],str[j+1])>0)
{c=str[j];str[j]=str[j+1];str[j+1]=c;}
}
}
main()
{
int i;
char *lang[]={"China","France","English"};
SortString(3,lang);
for(i=0;i<3;i++)
printf("\n%s ", lang[i]);
}
程序运行的结果为:
China
English
France

排 序前后指针数组的内存示意图如下。排序前lang[0],lang[1]和lang[2]保存的地址分别为"China","France" 和 "English"的首地址。排序结束后,3个字符串的内存情况没有发生变化,但指针数组里保存的指针顺序发生了变化:lang[1]指向 了"English",lang[2]指向了" France "。

 

C语言通过指针数组和二维数组读取文件的更多相关文章

  1. c语言中如何通过二级指针来操作二维数组

    通过二级指针去访问二维数组需要先给二级指针分配等同于二维数组行数的一维数组指针,然后把二维数组的每行首地址赋值给对应位置的一维指针上.之后就可以通过二维指针直接访问了. 参考代码如下,可以看具体注释辅 ...

  2. c++指针数组与二维数组的最大区别

    下面随笔是关于指针数组说明及与二维数组的最大区别. 指针数组 数组的元素是指针型 例 利用指针数组存放矩阵 1 #include 2 using namespace std; 3 int main() ...

  3. c#简单实现二维数组和二维数组列表List&lt;&gt;的转置

    刚看到网上一篇文章里用sql实现了行列转置.sql server 2005/2008只用一个pivot函数就可以实现sql server 2000很多行的复杂实现.提到转置,立刻想起还在求学阶段曾经做 ...

  4. java基础5 (一维)数组和二维数组

    本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等))    二维数组(二维数组的遍历.排序.查找.定义. ...

  5. C#的一维数组和二维数组定义方式:

    一维数组: //一维数组定义与初始化 ,, };//第一种方式 , , }; //第二种方式 int[] one3; //第三种方式 one3=,,}; 二维数组: //二维数组定义与初始化 //不规 ...

  6. C# 数组、一维数组、二维数组、多维数组、锯齿数组

    C#  数组.一维数组.二维数组.多维数组.锯齿数组 一.数组: 如果需要使用同一类型的对象,就可以使用数组,数组是一种数据结构,它可以包含同一类型的多个元素.它的长度是固定的,如长度未知的情况下,请 ...

  7. java - day005 - 数组工具类, 数组复制,二维数组,变量,方法, 面向对象

    1. java.util.Arrays  数组工具类    Arrays.toString (数组) 数组值链接字符串 Arrays.sort(数组) 基本类型: 优化的快速排序 引用类型: 优化的合 ...

  8. Java数组之二维数组

    Java中除了一维数组外,还有二维数组,三维数组等多维数组.本文以介绍二维数组来了解多维数组. 1.二维数组的基础 二维数组的定义:二维数组就是数组的数组,数组里的元素也是数组. 二维数组表示行列二维 ...

  9. JS中:数组和二维数组、MAP、Set和枚举的使用

    1.数组和二维数组:   方法一: var names = ['Michael', 'Bob', 'Tracy']; names[0];// 'Michael' 方法二: var mycars=new ...

  10. 二维数组,锯齿数组和集合 C# 一维数组、二维数组(矩形数组)、交错数组(锯齿数组)的使用 C# 数组、多维数组(矩形数组)、锯齿数组(交叉数组)

    二维数组,锯齿数组和集合 一.二维数组 二维数组:一维数组----豆角二维数组----表格 定义:1.一维数组:数据类型[] 数组变量名 = new 数据类型[数组长度];数据类型[] 数组变量名 = ...

随机推荐

  1. python测试开发工具库汇总(转载)

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  2. LuoguP1557 Kruscal的加法 题解

    题目Link 就是这道题,做了我整整一天! 看到题目,首先想到的就是:就这?就这一道大水题也能是绿?然后十分钟写完代码,提交-- 果不其然,绿题不是白绿的,看了一眼数据和讨论,又得写高精了-- 先附上 ...

  3. Rafy 框架 - 实体支持只更新部分变更的字段

    Rafy 快一两年没有大的更新了.并不是这个框架没人维护了.相反,主要是因为自己的项目.以及公司在使用的项目,都已经比较稳定了,也没有新的功能添加.但是最近因为外面使用了 Rafy 的几个公司,找到我 ...

  4. 从零入门 Serverless | 使用 Spot 低成本运行 Job 任务

    作者 | 代志锋(云果)  阿里云技术专家 本文整理自<Serverless 技术公开课>,点击链接即可免费听课:https://developer.aliyun.com/learning ...

  5. 分片利器 AutoTable:为用户带来「管家式」分片配置体验

    在<DistSQL:像数据库一样使用 Apache ShardingSphere>一文中,Committer 孟浩然为大家介绍了 DistSQL 的设计初衷和语法体系,并通过实战操作展示了 ...

  6. 『基于ArcGIS的Python编程秘籍(第2版)』书本源码

    ArcPy学习 第1章 面向ArcGIS的Python编程语言的基础 略 第2章 管理地图文档和图层 引用当前的地图文档 引用磁盘上的地图文档 获取地图文档的图层列表 限制图层列表 缩放至所选要素 改 ...

  7. bzoj4712 洪水(动态dp)

    看起来很模板的一个题啊 qwq 但是我还是wei 题目要求的是一个把根节点和所有叶子断开连接的最小花费. 还是想一个比较\(naive\)的做法 我们令\(dp1[i]\)表示,在\(i\)的子树内, ...

  8. opencv中的exp32f函数

    exp32f opencv的exp函数和cmath的exp函数在精度上存在一定差异,通过查找源码,发现了这么一段实现.代码如下: 点击查看代码 #define EXPTAB_SCALE 6 #defi ...

  9. NX9.0和NX10.0做自定义操作可以用的函数

    NX9.0:LIBUFUNX.DLL int UF_OPER_ask_check_geom(void *,int *,unsigned int * *) int UF_OPER_ask_first_o ...

  10. spring cache整合redis

    在项目中,我们经常需要将一些常用的数据使用缓存起来,避免频繁的查询数据库造成效率低下.spring 为我们提供了一套基于注解的缓存实现,方便我们实际的开发.我们可以扩展spring的cache接口以达 ...