C语言结构体数组赋值问题

将每个结构体数组进行赋值并输出

#include "stdio.h"
#define N 3
struct R{
char a[1];
char b[1];
}A[N],B[N];
void main(){
int i;
for(i=0;i<N;i++){
printf("A%d\t",i+1);
scanf("%s %s",&(A[i].a),&(A[i].b));
}
for(i=0;i<N;i++){
printf("B%d\t",i+1);
scanf("%s %s",&(B[i].a),&(B[i].b));
}
for(i=0;i<N;i++){
printf("%s,%s\t",(A[i].a),(A[i].b));
}
for(i=0;i<N;i++){
printf("%s,%s\t",(B[i].a),(B[i].b));
}
}

输入:1 a
2 a
3 a
1 s
2 s
3 s
输出:
1a2a3a,a2a3a 2a3a,a2a 3a,a 1s2s3s,s2s3s 2s3s,s3s 3s,s
求各位大师指点 谢谢
目的输出的是1,a 2,a 3,a 1,s 2,s 3,s

代码里几个问题:

    结构体R里,成员变量a和b数组长度都是1,不如直接定义成char a和char b;

    把所有scanf和printf里的%s都换成%c;

    前面两个for循环,循环体里,每次读取完字符,加一条语句getchar(),把输入缓冲区的内容清空。

修改代码如下:

#include "stdio.h"
#define N 3
struct R{
 char a;
 char b;
}A[N],B[N];
void main(){
 int i;
 for(i=0;i<N;i++){
  printf("A%d\t",i+1);
  scanf("%c %c",&(A[i].a),&(A[i].b));
  getchar();
 }
 for(i=0;i<N;i++){
  printf("B%d\t",i+1);
  scanf("%c %c",&(B[i].a),&(B[i].b));
  getchar();
 }
 for(i=0;i<N;i++){
  printf("%c,%c\t",(A[i].a),(A[i].b));
 }
 for(i=0;i<N;i++){
  printf("%c,%c\t",(B[i].a),(B[i].b));
  }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-22
其实你的程序是正确的。只不过,TC有关于float(浮点数)的BUG而已。
scanf:floating
point
formats
not
linked
解决这个问题有一个方法,先#include
<math.h>
然后在main的第一句,调用
sqrt(0);
//求0的平方根,但舍弃结果
//这句的作用,只是为了让TC打开浮点数支持
相似回答