如果你说的输入是指从键盘输入那么就用格式:
char a[80],b[80],c[80];
scanf("%s%s%s",a,b,c);
这里scanf()格式中%s%s%s之间没有空格,输入时你可以在一行上同时输入姓名、身份证号、工作等等,中间用空格(多少个无所谓)隔开;也可以在输入姓名之后按回车键在第二行输入身份证号再回车再在第三行输入工作等。即
姓名__ 身份证号_______工作
或者
姓名_______身份证号
工作
或者
姓名
身份证号
工作
等等。scanf()函数的特点就是以空格或者Tab或者回车键作为一次数据输入的结束。各数据中间只要有空格你输入的姓名、身份证号、工作就分别自动存到字符数组a[80],b[80],c[80]中.
如果你说的是从磁盘文件中读出一行数据分别存到a[80],b[80],c[80]中,可以用fscanf()函数来实现。我给你举个例子,比如我的文件w02.txt的内容为:
weiwei 10102266 worker
mali 10220135 teacher
weifang 10219936 trader
wangping 10330088 scientist
现在要把它读出来分别存放,则一个完整的c程序如下,程序在win-tc和Dev-c++下已调试通过。这是我写的,你参考一下,比较一下程序执行后w02.txt和w03.txt以及屏幕上的输出。
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define N 100 /*最多读出100行数据*/
main()
{
int i=0,j,max;
long b[N]; /*假定身份证号为长整型数*/
char s[N][81],a[N][20],c[N][20],*p; /*s[N][81]用来读入文件w02.txt的内容并写进磁盘文件w03.txt*/
FILE *fp1,*fp2;
fp1=fopen("w02.txt","r");
fp2=fopen("w03.txt","w");
while (i<N&&fgets(s[i],81,fp1)!=NULL)
{
p=strchr(s[i],'\n'); /*将每一行最后的回车符去掉*/
if(p)
*p='\0';
i++;
}
max=i;
rewind(fp1); /*重新定位文件内的位置指针*/
for(i=0;i<max;i++)
{ fscanf(fp1,"%s%ld%s\n",a[i],&b[i],c[i]);/*按"%s%ld%s\n"格式分别存放姓名到数组a[][],身份证号到数组b[],工作到数组c[][]中*/
fprintf(fp2,"%s\n",s[i]); /*输出到文件w03.txt中*/
printf("%s\t\t",a[i]); /*打印到屏幕上*/
printf("%ld\t\t",b[i]);
printf("%s\n",c[i]);
}
fclose(fp1);
fclose(fp2);
getch();
}
温馨提示:答案为网友推荐,仅供参考