C语言从指定行读取txt中的数据

C语言从指定行读取txt中的数据,第1张

N_size 三列数据 不超过多少行,这里给了 300

120 -- 前5行每行最多字符数,我给了 120

你可以修改。

NN 是读入数据的行数,程序自己统计出来。

#include<stdio.h>

#include<stdlib.h>

FILE *fin

#define N_size 300

void main()

{

int x[N_size],y[N_size],z[N_size]

char namein[80]="abc.dat"

char *buff

int i,NN

buff = (char *) malloc(sizeof(char) * 120)

if ( ( fin = fopen(namein,"r") ) == NULL) {

printf("open error\n")exit(0)

}

for (i=0i<5i++) if ( fgets(buff,120,fin)==NULL) printf("skip 5 lines error\n")

printf("pass\n")

NN = 0

while(1){

if (fscanf(fin,"%d %d %d",&x[NN],&y[NN],&z[NN]) ==EOF) break

NN = NN + 1

}

fclose(fin)

printf("NN=%d\n",NN)

exit(0)

}

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main(int argv, char* args[])

{

char a[6][128]

int i

for(i=0i<10i++)

{

gets(a[i])

}

int j

char t[128]

for(i=10i>0i--)

{

for(j=0j<ij++)

{

if(strcmp(a[j],a[j+1])<0)

{

strcpy(t,a[j])

strcpy(a[j],a[j+1])

strcpy(a[j+1],t)

}

}

}

for(i=0i<10i++)

{

puts(a[i])

}

system("pause")

return 0

}

1. 常规 *** 作

两个数的平均数等于两数之和除以二

int main()

{

int a = 10

int b = 5

int c = a + b

printf("%d\n", c)

system("pause")

return 0

}

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

这种方法有一定的缺陷,当a或b的值够大时,以至于超过了intmax(整形所能达到的最大值,这个方法就显得不够严谨。

2. 最常用的方法

如:将较大的数减去较小的数,得到两数的相差多少,再将差值的一

半给较小的数,这样两数就相等了。

int main()

{

int a = 10

int b = 5

int c = a + (b - a) / 2

system("pause")

return 0

}

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

这个方法优于第一种,c的值永远不会超过intmax

3. 使用按位与和按位异或 *** 作符

int main()

{

int a = 10

int b = 5

int c = (a&b) + (a^b)/2

system("pause")

return 0

}

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

这种方法较难理解,一般不建议使用。

4. 在第三种方法基础上使用右移 *** 作符

int main()

{

int a = 10

int b = 5

int c = (a&b) + (a^b>>1)

system("pause")

return 0

}

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

将一个数右移一位相当于给这个数除以二。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6631718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存