2015-11-28 2 views
0
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 выход имеет немного неправильный

birol genç 30 35 

выход:

birol gen┼ 30 35 

Что здесь проблема?

+0

другой пример ввод: buğra kara 12 30 мощность: bu§ra kara 12 30 – karabugra05

+0

Не снова. Проверьте возвращаемое значение scanf. Также параметры формата, чтобы вы не получили переполнения буфера –

+2

Связанный: [Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о юникодном и символьном наборах (никаких оправданий!)] (Http://www.joelonsoftware.com/articles/Unicode .html) – DevSolar

ответ

2

scanf("%s %s %d %d",&name,&surname,&studentId,&nOfWorkingDay); должен быть

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

т.е. удалить & перед тем name и surname которые уже адреса строки символов.

+0

это не изменилось – karabugra05

+1

Правда, но не причина проблемы. –

+0

Как ваш ответ отвечает на вопрос OPs? Вопрос OPs был о том, что Output, а не о том, как использовать scanf. – Michi

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); 
} 

Описание:

зсапЕ ("% s", Firstname);

Заполнитель% s используется для чтения в тексте, но только до тех пор, пока не встретится первый символ пробела. Таким образом, пробел или вкладка или клавиша Enter завершают строку. (Это отстой.) Кроме того, firstname является массивом символов, поэтому ему не нужен оператор & в функции scanf().

+0

Как ваш ответ отвечает на вопрос OPs? Вопрос OPs был о том, что Output, а не о том, как использовать scanf. – Michi

+1

достаточно справедливо - его сканирование явно проблема, но ему нужно исправить это, прежде чем идти дальше. – artm

+0

Я ценю человека. @artm –

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); 
Смежные вопросы