2014-11-06 2 views
1
#include <stdio.h> 

int main() 
{ 
    char yourname; 
    int yourage; 

    printf("Whats your name?\t"); 
    scanf("%c",&yourname); 
    printf("How old are you?\t"); 
    scanf("%d",&yourage); 
    printf("You are %d years old and your name is %c\n\n\n",yourage,yourname); 
    system("pause"); 
    return(0); 
} 

Я хочу, чтобы эта программа задать имя пользователя и возраст, а затем распечатать их ..C - зсапЕ, имя Printf и возрастная программа

+1

Что вы хотите сказать? –

+0

Вы прочитали документацию по [scanf (3)] (http://man7.org/linux/man-pages/man3/scanf.3.html)? Вы искали некоторые примеры 'scanf' в каком-то свободном программном обеспечении? –

+0

Это хорошо. Удачи, выясняя это. У вас возникли вопросы? –

ответ

1

при использовании scanf, %c предназначен для получения одного символа. Если вы хотите получить строку, вам нужно использовать %s.

Кроме того, в C langage строка представляет собой только массивы символов. Поэтому вам нужно объявить массив char.

#include <stdio.h> 

int main() 
{ 
    char yourname[100]; 
    int yourage; 

    printf("Whats your name?\t"); 
    scanf("%s",yourname); //i let you read the doc to avoid overflow :) 
    printf("How old are you?\t"); 
    scanf("%d",&yourage); 
    printf("You are %d years old and your name is %s \n\n\n",yourage,yourname); 
    system("pause"); 
    return(0); 
} 
+0

Нит-строки не являются «просто« char'-массивами »; в C строка представляет собой последовательность символов, за которой следует 0-значный байт. Строки хранятся * в массивах 'char', но не все массивы' char' содержат строку. –

+0

Спасибо, но если я изменю 100 на 0 или 1 или 2, это не повлияет на программу .. почему? –

+0

Если вы положили 0, все символы помещаются где-нибудь. Если вы пишете данные в памяти, которые не выделены для вашей программы, это приведет к сбою. char yourname [100] присвоил вам массив, тогда 'yourname' является указателем где-то в памяти, а следующие 100 ячеек выделены для вашего массива. И не забывайте, что строки заканчиваются символом с нулевым завершением ('\ 0'). Так что всегда держите и лишнюю ячейку для этого. – crashxxl

0

Имя должно быть массив chracter, я имею в виду строку. Таким образом, вы можете создающую строку такой:

char yourname[30]; 
. 
. 
scanf("%s", &yourname); 
. 
. 
printf("your name is %s\n",yourname); 
0

Это должно работать для вас:

#include <stdio.h> 

int main() { 
    char yourname[20]; 
    int yourage; 

    printf("Whats your name?\t"); 
    scanf("%18[^\n]s", yourname); 

    yourname[19] = '\0'; 
    fflush(stdin); 

    printf("How old are you?\t"); 
    scanf(" %d",&yourage); 

    printf("You are %d years old and your name is %s\n\n\n", yourage, yourname); 

    system("pause"); 
    return(0); 
} 
Смежные вопросы