Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: \странная ошибка в С  (Прочитано 2213 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kritik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
\странная ошибка в С
« : 24 Октябрь 2006, 10:23:22 »
Пробоапл программировать в С, делал еще только основы, но прграммка странным образом не работает, ощибки не видет даже препод.... :o
#include <stdio.h>
int main(void){
 int m;
 printf("Tere, sisestage oma nimi:",&m);
 scanf("%c",&m);
 printf("\n");
 printf("Tere,",&m);
 //printf(&nimi);
 printf("\n");

return(0);
}

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #1 : 24 Октябрь 2006, 11:26:31 »
man printf !!! обратить внимание на строку формата.
а вообче лучче книжков почитать  ::)

читобы выводить в Си, пример:
int m;
printf("Здесь будет печататься начальное значение m: %d\n", m);
m = 5;
printf("А здесь уже другое значение m: %d\n", m);

Оффлайн kritik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #2 : 24 Октябрь 2006, 18:18:42 »
к слову а как можно русские маны поставить? ::)

Оффлайн kritik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #3 : 24 Октябрь 2006, 21:25:46 »
теперь сделал вместо чисел буквы и перевел программкую
[code
]#include <stdio.h>
#include <stdio.h>
int main(void){
 char *nimi;
 printf("Здравствуйте, введите имс: %c",nimi);
 scanf("%c",&nimi);
 printf("\n");
 printf("Здравствуйте, %c",nimi,"\n");


return(0);
}
проблема в том, что отображает только первую букву имени, может вместо char надо другой тип поставить?

Оффлайн xxxYURAxxx

  • Активист
  • *
  • Сообщений: 537
  • LinuxFormat друг человека...
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #4 : 24 Октябрь 2006, 23:21:03 »
вы уверены, что так надо? printf("Здравствуйте, введите имс: %c",nimi);

char *nimi[100];
 printf("Здравствуйте, введите имс: ");
 scanf("%c",&nimi);
 printf("Здравствуйте, %c",nimi,"\n");

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #5 : 24 Октябрь 2006, 23:45:40 »
теперь сделал вместо чисел буквы и перевел программкую
#include <stdio.h>
int main(void){
  char *nimi;
  printf("Здравствуйте, введите имс: %c",nimi);
  scanf("%c",&nimi);
  printf("\n");
  printf("Здравствуйте, %c",nimi,"\n");
  return(0);
}

проблема в том, что отображает только первую букву имени, может вместо char надо другой тип поставить?

Таки возьмите почитайте умных книжек.

Подсказки: char* - это указатель на char (что тут в обчем-то и написано)
Перед тем как туда поместить что-то большое нужно память выделсть, потом освобождать и т.п.
Если хочется на примерах - скачайте исходники каких-нибудь утилит и покопайтесь в них.

Оффлайн xxxYURAxxx

  • Активист
  • *
  • Сообщений: 537
  • LinuxFormat друг человека...
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #6 : 25 Октябрь 2006, 00:08:25 »
а еще проще без использования указателей :) полностью согласен...
книга вам поможет... лучший учебник - от Шилдта ИМХО...
там написано для чего указатели ссылки и т.д.
а поупражнсться можно и так...

Оффлайн kritik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #7 : 25 Октябрь 2006, 00:10:39 »

Таки возьмите почитайте умных книжек.

взять то возьму, но попозже..

Оффлайн s.r

  • Участник
  • *
  • Сообщений: 162
  • Во какой!!!!
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #8 : 07 Ноябрь 2006, 04:46:41 »
А нужен именно С или может будет писать через потоки (С++)?
Ну вообще говоря, смотри:

#include <stdio.h>

int main(int argc, char* argv[]) {
   char a[10]; // Длину нужно указать заранее
   scanf("%s", &a);
   printf("%s", a);
   return 0;
}

P.S. Можно конечно и не указывать размер, но тогда нужно писать так
char *a;
a = new char [size]; //size -- может быть и переменной
...
delete a []; //в хорошем тоне лучше после работы с указателем, очистить область памяти выделенную для него


Оффлайн kondor

  • Новичок
  • *
  • Сообщений: 30
  • Feathery
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #9 : 07 Ноябрь 2006, 08:14:45 »
Ну вообще говоря, смотри:

#include <stdio.h>


char *a;
a = new char [size]; //size -- может быть и переменной
...
delete a []; //в хорошем тоне лучше после работы с указателем, очистить область памяти выделенную для него

Ну уж если начали писать на Plain C, так и используйте соответствующие методы для выделенис/освобождения памяти под указатель ;):

#include <stdlib.h>
#include <string.>
...
char* a;
if (!(a = (char *)malloc(sizeof(char) * 24)) {
      printf("memory allocation error!\n");
      exit(1);
}

strcpy(a, "Hello, World!");
printf("%s\n", a);

free(a);
:: Ubuntu 6.06.1LTS ::

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: \странная ошибка в С
« Ответ #10 : 16 Август 2007, 08:55:57 »
Таки возьмите почитайте умных книжек.
взять то возьму, но попозже..
Это ошибка не в Си а в генах.
Маньяк! Ну взял таки наконец попозже через годик другой? Нее... лучше на скомэйку, сэмечки щолкать.

 

Страница сгенерирована за 0.057 секунд. Запросов: 24.