include<stdio.h> int main(){ struct stu { int id;char name[11];int a,b,c;} t,st[5];int i,j;FILE *fp1,*fp2;if((fp1=fopen("d:\\stud.dat","r"))==NULL){ printf("f1 open error!\n");return 1;} if((fp2=fopen("d:\\studsort.dat","w"))==NULL){ printf...
定义数组时只能使用常量,不能使用变量。N是变量,所以name[N][20]和num[N]都是错误的。修改方法:两个定义语句中的N改成一个比较大的数字,如100即可。有什么问题请留言。
scanf_s和scanf是不一样的 对于%c和%s 需要输入最大范围。修改为 scanf_s("%d%s%f", &student1.num, student1.name, 20, &student1.score);scanf_s("%d%s%f", &student2.num, student2.name, 20, &student2.score);
是对的没错,但是这样做是从str[2]开始写入.str[0]和str[1]是随机值.除非你手动给这两位赋值,否则输出也只能从str[2]开始.不然结果不可预知.
输出是How,因为字符串中间有空格,即‘\0’,输出时会认为在How后字符串已经结束,因此就把该字符串输出出来。楼主有不懂可以再问哦。
include <stdio.h>int main(){ char str[20]; scanf("%s",str);//输入 printf("%s\n", str);//输出 return 0;}希望你要的是C语言的。
第一个问题:scanf中的%s接受一个cha*的指针作为存取字符串的缓冲区首地址,然后从标准输入读取数据复制到缓冲区中,直到遇到分割符(比如空格,制表符,换行符之类的),你用了number(类型为int*)作为参数虽然也可以,但是编译器会warning,这种情况下int number[N]相当于char number[N*4],在32位平台...
Fields: printf and wprintf Functions”6.2的意思是,输出至少(注意是至少)占用6位(包括小数点".", e+003 的"e+" ),同时小数点后有两位。你把代表左对齐的“-”去掉,然后打印 int main(){ double x;x=-3223.87654;printf("%e\n",x);printf("%20e\n",x);} 很容易数明白的。
scanf("%C",&(p->sex));3.printf("请输入成绩");scanf("%c",p->sex); /*后又试:scanf("%c",&p->sex);均不成功*/ scanf("%f",p->score);4.printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score); 指针指向符号不是下划线,是减号。改成printf(...
你好,题目是这样的吧:include <stdio.h> void main(){ char a[20], b[20], c[20];scanf("%s%s", a, b);gets(c);printf("%s%s%s\n", a, b, c);} 输入this is a cat!首先是scanf按%s来接收输入缓存中的数据赋值给a,但是scanf是碰到空格就认为字符串结束,于是字符串数组a...