scanf输出有点错误

时间:2015-11-28 06:19:42

标签: c scanf

int studentId,nOfWorkingDay;
char name[30],surname[30]; 
printf("Enter person information : name , surname ,studentId, nOfWorkingDay\n");
scanf("%s %s %d %d",&name,&surname,&studentId,&nOfWorkingDay);
printf("%s %s %d %d",name,surname,studentId,nOfWorkingDay);

我得到一个奇怪的输出。例如,当我输入:

birol genç 30 35

输出是:

birol gen┼ 30 35

这里有什么问题?

3 个答案:

答案 0 :(得分:2)

scanf("%s %s %d %d",&name,&surname,&studentId,&nOfWorkingDay);应该是

scanf("%s %s %d %d", name, surname,&studentId,&nOfWorkingDay);

即删除&name之前的surname,它们已经是字符串的地址。

答案 1 :(得分:1)

int studentId,nOfWorkingDay;
char name[30],surname[30]; 
printf("Enter person information : name , surname ,studentId,nOfWorkingDay\n");
scanf("%s %s %d %d",name,surname,&studentId,&nOfWorkingDay);
printf("%s %s %d %d",name,surname,studentId,nOfWorkingDay);

答案 2 :(得分:0)

#include <stdio.h>
int main(){

int studentId,nOfWorkingDay;
char name[30],surname[30]; 
printf("Enter person information : name , surname ,studentId,nOfWorkingDay\n");
scanf("%s %s %d %d",name,surname,&studentId,&nOfWorkingDay);
printf("%s %s %d %d",name,surname,studentId,nOfWorkingDay);
}

描述:

的scanf(&#34;%S&#34;,姓名);

%s占位符用于读取文本,但仅限于遇到第一个空格字符。所以空格或制表符或Enter键终止字符串。 (太糟糕了。)另外,firstname是一个char数组,所以它不需要&amp; scanf()函数中的运算符。