Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для maSt
5 / 5 / 3
Регистрация: 28.02.2010
Сообщений: 166

Scanf и некоторые детали

27.11.2012, 01:55. Показов 1075. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот работаю со scanfom и появилось несколько вопросов.
C++
1
2
3
4
5
6
7
char name[10];
    
    do 
    {
        scanf("%s",&name);
}
while (...);
Вот 1 вопрос. У меня есть строка ,в строке 2 слова и 1 число.
Например CREATE file1 3.
В интернете находил примеры только как-то так как написал, но name = "С".Как правильно считать слово?
Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2012, 01:55
Ответы с готовыми решениями:

Разъясните пожалуйста некоторые детали...
#include "stdafx.h" #include <conio.h> #include <stdio.h> #define eof -1 int main() { int c; printf("Make...

Главная функция (вводит некоторые значения и передает их и ссылки на некоторые переменные в функцию)
Написать главную функцию, которая вводит некоторые значения и передает их и ссылки на некоторые переменные в функцию. Получив результаты...

Upgrade ПК, бюджет, некоторые детали
Здравствуйте товарищи. Когда-то давно, я вроде не плохо разбирался в компах, даже что-то там разгонял, но когда з/п пошла в гору, нужда...

16
 Аватар для prootq
8 / 8 / 2
Регистрация: 09.06.2011
Сообщений: 72
27.11.2012, 03:10
считывать его надо не в переменную типа char, а в массив типа char*.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.11.2012, 03:30
Вопрос понятней изложите. Если каждое слово из строки отдельно, а число в переменую типа int, то так можно:
C++
1
2
3
4
char name[10];
char name2[10];
int n = 0;
scanf("%s%s%d", &name, &name2, &n);
В name[] будет: "CREATE", в name2[]: "file1", в n: 3.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
27.11.2012, 03:46
Цитата Сообщение от alsav22 Посмотреть сообщение
В name[] будет: "CREATE", в name2[]: "file1", в n: 3.
нет, не будет

Добавлено через 27 секунд
Цитата Сообщение от maSt Посмотреть сообщение
scanf("%s",&name);
и у тебя не будет

Почему вы передаёте в сканф что угодно, но не адрес начала строки?
C++
1
scanf("%s", name);
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.11.2012, 03:56
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
нет, не будет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    char name[10];
    char name2[10];
    int n = 0;
    
    scanf("%s%s%d", &name, &name2, &n);
 
    cout << name << endl << name2 << endl << n << endl;
    
    system("pause");
    return 0;
}
Миниатюры
Scanf и некоторые детали  
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
27.11.2012, 04:08
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
* * char name[10];
* * char name2[10];
* * int n = 0;
scanf("%s%s%d", &name, &name2, &n);
cout << name << endl << name2 << endl << n << endl;
system("pause");
* * return 0;
}
Тогда я ничего не понял. неужели нет разницы
между name и &name ?
Если нет, то выходит также нет и между
между &(name[0]) и &name !
следовательно нет и между name[0] и name
следовательно бред какой-то...
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.11.2012, 04:14
Kuzia domovenok, фишка в том, что scanf принимает в начале как бы указатели, но %s само содержит указатель и разыменовывает его, получается оно сразу считывает адрес, а не ждет его.

Голова уже не варит, но надеюсь что-то объяснить удалось.

Хотя могу и ошибаться.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.11.2012, 04:16
Компиляторы почему-то пропускают. Студия без предупреждений, mingv - только предупреждения.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.11.2012, 04:18
Цитата Сообщение от alsav22 Посмотреть сообщение
Компиляторы почему-то пропускают. Студия без предупреждений, mingv - только предупреждения.
Ну смотря какой mingw, мой вот не фыркает.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.11.2012, 04:28
Цитата Сообщение от MrGluck Посмотреть сообщение
мой вот не фыркает
А warnings включены?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.11.2012, 04:37
Цитата Сообщение от alsav22 Посмотреть сообщение
А warnings включены?
Включены дефолтные, а вот если сделать -Wall, то уже появляются.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
27.11.2012, 09:12
clang++3.1

new.cpp:6:12: warning: format specifies type 'char *' but the argument has type 'char (*)[10]' [-Wformat]
scanf("%s", &p);
И вообще, давайте не будем писать некорректно. Все-таки код alsav22 некорректен, а как отреагирует на него компилятор - это дело компилятора.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.11.2012, 17:01
Цитата Сообщение от ForEveR Посмотреть сообщение
И вообще, давайте не будем писать некорректно. Все-таки код alsav22 некорректен
Согласен.
0
 Аватар для maSt
5 / 5 / 3
Регистрация: 28.02.2010
Сообщений: 166
27.11.2012, 18:12  [ТС]
Спасибо всем большое. Теперь когда я вывожу то что считал на экран получаю CREATE.
Но есть еще проблема , когда я пытаюсь сделать так
C++
1
if (name == "CREATE")
То оно не проходит. В интернете уже обыскался нормальной статьи с объяснениями как работает char, но так ничего и не нашел.
И вопрос номер 2.
Возможно ли считать CREATE file1 3
в string ,а потом с этой строки по очереди считать все элементы?
И если да, то как?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
27.11.2012, 18:15
C++
1
if (strcmp(name, "CREATE")==0){}
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.11.2012, 18:31
Цитата Сообщение от maSt Посмотреть сообщение
И вопрос номер 2.
Возможно ли считать CREATE file1 3
в string ,а потом с этой строки по очереди считать все элементы?
И если да, то как?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main()
{
    string str;
    string name;
    int n = 0;
    
    stringstream s;
    
    getline(cin, str);
    
    s << str;
    s >> str >> name >> n;
 
    cout << str << endl << name << endl << n << endl;
    
    system("pause");
    return 0;
}
Миниатюры
Scanf и некоторые детали  
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.11.2012, 18:37
Если name - string, то можно и так писать:
C++
1
if (name == "file1")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2012, 18:37
Помогаю со студенческими работами здесь

Некоторые детали с текстовым файлом
Начал писать тест, который должен брать вопросы и ответы с некоторого текстового файла. procedure TForm2.Button1Click(Sender: TObject); ...

В мобильной версии не отображаются некоторые детали
Есть сайт В мобильной версии не отображаются то, что подчеркнуто на скриншоте. Что подправить надо, что бы отображалось в мобильной...

Нагреваются некоторые детали домашнего кинотеатра LG LH-TK255X
Здравствуйте помогите починить домашнего кинотеатра LG LH-TK255X. После нескольких минут просмотра очень сильно нагреваются некоторые...

Простые задачки по паскалю, но не могу понять некоторые детали
Здравствуйте, вот задали мне задание, программы, впринцепе, самые начальные, но никогда не работал с нестандартными функциями. Вот...

Нужно заменить некоторые детали ПК (интернет, FileZilla, Photoshop, Snagit и т.д.).
Здравствуйте, я бы хотел узнать что мне нужно заменить для комфортной работы в интернете + для запуска программ: FileZilla, Photoshop(редко...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru