Форум программистов, компьютерный форум CyberForum.ru

char не воспринимает %c, но воспринимает %s - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.85
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
03.11.2010, 10:31     char не воспринимает %c, но воспринимает %s #1
Вопрос в строке "fprintf(f, "%s", text);". Переменная text имеет тип char, однако если я пишу %c, то текст в файл не выводится, а если пишу %s, то все нормально. Почему, учитывая то, что для символов предназначен %c? Оо

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main() 
{ 
char text[100];
int i=0; 
char ch;
FILE *f;
f = fopen("tekt.txt", "w");
cin >> text;
fprintf(f, "%s", text);
fclose(f);
Добавлено через 16 минут
Кто-нибудь может объяснить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2010, 10:31     char не воспринимает %c, но воспринимает %s
Посмотрите здесь:

C++ Не воспринимает тип данных
Почему компилятор не воспринимает define константу C++
Не воспринимает кириллицу C++
C++ Вижал студио не воспринимает чар
C++ Не воспринимает проверку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 10:51     char не воспринимает %c, но воспринимает %s #2
Вы сами на вопрос ответили. %c предназначен для символов. А %s - для строк. У вас есть массив символов, т.е. строка. text у вас - не символ, а указатель на массив символов. Значит его вам надо выводить как строку.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
03.11.2010, 10:54  [ТС]     char не воспринимает %c, но воспринимает %s #3
Я думал, что тип переменной определяет как выводить.
Спасибо.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 10:56     char не воспринимает %c, но воспринимает %s #4
Правильно. В данном случае тип вашей переменной text - char *, а этот тип в Си определяет строку.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
03.11.2010, 10:58  [ТС]     char не воспринимает %c, но воспринимает %s #5
Эм, тип char без "*" и я пишу на с++
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 11:00     char не воспринимает %c, но воспринимает %s #6
Нет, со "*". Потому что вы создаёте массив. Имя массива - указатель на его начало. Я у вас вижу перемешанный стиль Си и Си++. Строки вы используете в стиле Си.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
03.11.2010, 11:06  [ТС]     char не воспринимает %c, но воспринимает %s #7
silent_1991, как понять строки я использую в стиле СИ? Оо
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 11:09     char не воспринимает %c, но воспринимает %s #8
В плюсах для этого есть контейнер string. Его использование - стиль Си++. А когда строки представляются как массив символов - это строки в стиле Си, потому как встроенного строкового типа в сях нету.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
03.11.2010, 11:15  [ТС]     char не воспринимает %c, но воспринимает %s #9
Я пробовал через string - выдает ошибку.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 11:17     char не воспринимает %c, но воспринимает %s #10
Потому что и для вывода (в том числе файлового) в Си++ есть собственные функции. А вы используете сишную функцию fprintf (да и потоки сишные, у вас только оператор cin из плюсов, да пара инклудов), а она ничего про string не ведает. Так что я склонен предполагать, что пишите вы на Си с небольшими добавочками из плюсов (что не есть хорошо).
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
03.11.2010, 11:22  [ТС]     char не воспринимает %c, но воспринимает %s #11
silent_1991, можно поподробнее об ф-ция ввода, вывода на с++? Сколько читал и пробовал - наиболее простым и понятным, а так же удобным способом показался этот (1 пост)
пс: я подключал #include <string>
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 11:25     char не воспринимает %c, но воспринимает %s #12
Почему бы не поискать в книгах/гугле? Вот, например: http://ad.cctpu.edu.ru/cpp/glava27_5.htm
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2010, 11:31     char не воспринимает %c, но воспринимает %s
Еще ссылки по теме:

Студия не воспринимает операторы С++ C++
C++ Не воспринимает русский язык
VS не воспринимает пользовательские классы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
03.11.2010, 11:31  [ТС]     char не воспринимает %c, но воспринимает %s #13
silent_1991, спасибо. Вопрос исчерпан. Пойду изучать
Yandex
Объявления
03.11.2010, 11:31     char не воспринимает %c, но воспринимает %s
Ответ Создать тему
Опции темы

Текущее время: 20:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru