C语言问题求解答!
(1)定义一个字符串a,并赋初值;再定义一个字符串b,将字符串a的值赋给字符串b
1、题目说明:
读取 “D:\软件:\cd文件:\文件操作:\测试数据.txt” 的数据并进行显示,按从小到大排序后存入 “D:\软件:\cd文件:\文件操作:\排序数据.txt” 中
2、思路
step1:打开两个文件,用FILE*类型的指针 fa,fb指向两文件(两文件均保存在同一路径下,因为 ”测试数据.txt“ 可读所以用r模式,“排序数据.txt” 可写,所以用w模式,)
step2:定义数组a,从fa中读取 “测试数据.txt” 中的数据,并用n++求数据的总个数,将读取的数据存入数组a中
step3:对数组a进行排序
step4:通过fb将数组a中的数据存入 “排序数据.txt” 中
3、代码实现
#include <stdio.h>
#include <stdlib.h>
void sort(int a[20],int n)//从小到大的排序函数
{
int i,j,t;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j+1]<a[j])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void output(int a[20],int n)//输出函数
{
int i;
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
int main()
{
FILE *fa=fopen("测试数据.txt","r"); //step1:打开文件
FILE *fb=fopen("排序数据.txt","w");
int a[20],i,n=0;
if(fa==NULL||fb==NULL)//提示信息
{
printf("文件打开失败!\n");exit(1);
}
else
printf("文件打开成功!\n");
while(fscanf(fa,"%d",a+n)!=EOF) n++; //step2:读取信息存入数组a
//因为fscanf读取失败返回EOF
output(a,n);
sort(a,n);//step3:排序
for(i=0;i<n;i++) //step4:将数据写入
fprintf(fb,"%d ",a[i]);
fclose(fa);
fclose(fb);
return 0;
}
4.输出结果+文件更改后
定义字符串a并给其初始值,可以使用以下方式:
char a[50] = "Hello World!";
这里定义了一个字符数组a,长度为50,初始值为"Hello World!"。
定义字符串b并让其等于字符串a的值,可以使用以下方式:
char b[50];
strcpy(b, a);
这里定义了一个字符数组b,长度为50,并使用strcpy函数将a的值复制给b。需要注意的是,strcpy函数需要引入string.h头文件。完整的代码如下:
#include <stdio.h>
#include <string.h>
int main() {
char a[50] = "Hello World!";
char b[50];
strcpy(b, a);
printf("a: %s\n", a);
printf("b: %s\n", b);
return 0;
}
输出结果为:
a: Hello World!
b: Hello World!
char a[]="1234";
char b[]=a;
string a="asd";
string b=a;