Найти в Дзене
ИТ разнообразно

CS50x: Практические задачи (отладка)

Ссылка на проблему Дано Это код с ошибкой, которую вы исправите // Become familiar wih C syntax // Learn to debug buggy code #include <cs50.h>
int main(void) { // Ask for your name and where live name = get_string("What is your name? ") location = get_string("Where do you live? ") // Say hello print("Hello, %i, from %i!", name, location) } Ошибка №1 Вы увидите, что это выдаст вам эту ошибку при запуске/вводе команды make debug: debug.c:9:5: error: use of undeclared identifier 'name' name = get_string("What is your name? ") ^
1 error generated.
make: *** [<builtin>: debug] Error 1 Чтобы решить эту проблему, нам нужно указать, какого типа это имя, оно является строкой? Да!! Посмотрите на это. Изменяем код вот так: string name = get_string("What is your name? "); string location = get_string("Where do you live? "); и также всегда не забывайте точку с запятой в последней строке, иначе вы получите эту ошибку: debug.c:9:52: error: expected ';' at end of declara
Оглавление

Ссылка на проблему

Дано

Это код с ошибкой, которую вы исправите

// Become familiar wih C syntax
// Learn to debug buggy code
#include <cs50.h>

int main(void)
{
// Ask for your name and where live
name = get_string("What is your name? ")
location = get_string("Where do you live? ")
// Say hello
print("Hello, %i, from %i!", name, location)
}

Ошибка №1

Вы увидите, что это выдаст вам эту ошибку при запуске/вводе команды make debug:

debug.c:9:5: error: use of undeclared identifier 'name'
name = get_string("What is your name? ")
^
1 error generated.
make: *** [<builtin>: debug] Error 1

Чтобы решить эту проблему, нам нужно указать, какого типа это имя, оно является строкой? Да!!

Посмотрите на это.

Изменяем код вот так:

string name = get_string("What is your name? ");
string location = get_string("Where do you live? ");

и также всегда не забывайте точку с запятой в последней строке, иначе вы получите эту ошибку:

debug.c:9:52: error: expected ';' at end of declaration
string name = get_string("What is your name? ")
^
;
1 error generated.

Ошибка №2

debug.c:13:5: error: implicit declaration of function 'print' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
print("Hello, %i, from %i!", name, location)
^

Этот код означает, что в языке C отсутствует синтаксис для вывода информации на экран.

Чтобы решить эту проблему, нам нужно заменить print на printf, а также не забудьте добавить #include <stdio.h> вверху выше или ниже #include <cs50.h>, иначе printf не будет работать.

Ошибка №3

Теперь о последней ошибке!!

debug.c:13:35: error: format specifies type 'int' but the argument has type 'string' (aka 'char *') [-Werror,-Wformat]
printf("Hello, %i, from %i!", name, location)
~~ ^~~~
%s

Поскольку ошибка говорит, что мы не можем поместить туда i, потому что имя представляет собой строку, а не число, мы можем добавить %i только в том случае, если переменная является числом.

Поэтому, чтобы исправить это, измените два %i на %s, потому что они оба являются строками, а также добавьте точку с запятой в последней части, как показано ниже:

printf("Hello, %s, from %s!", name, location);

Решение

// Become familiar wih C syntax
// Learn to debug buggy code
#include <stdio.h>
#include <cs50.h>

int main(void)
{
// Ask for your name and where live
string name = get_string("What is your name? ");
string location = get_string("Where do you live? ");

// Say hello
printf("Hello, %s, from %s!", name, location);
}

Отлично сделано!!!

Перевод с некоторыми авторскими правками.

Автор оригинала: Shanxx.