- ベストアンサー
ポインタによる文字列の出力
- C++のポインタを使用して文字列を出力する方法について解説します。
- Visual Studioを使用している場合、ポインタの初期化に関する警告が表示されることがあります。
- プログラム力が低い場合でも、ポインタを正しく扱うための方法を学ぶことができます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
- AsarKingChang
- ベストアンサー率46% (3467/7473)
- asuncion
- ベストアンサー率33% (2126/6288)
- AsarKingChang
- ベストアンサー率46% (3467/7473)
- f272
- ベストアンサー率46% (8042/17183)
関連するQ&A
- ポインタとポインタのポインタの違い
#include<iostream> #include<cstdlib> using namespace std; long myclass(const char *start,char **end,int base=10); int main(){ long d; char *p; char ss[]="231231"; d=myclass(ss,&p,16); cout<<d; d=myclass(ss,&p); cout<<d; return 0; } long myclass(const char *start,char **end,int base){ return strtol(start,end,base); } これはあるサンプルプログラムです。 これを自分が少しいじって char *pをchar**pにして&pをpにしました。 すると初期化されていないローカル変数pが使用されますと出て、警告がでました。 自分ではどちらのソースも初期化されていないと思うのですが、実際サンプルプログラムをコンパイルすると警告はでません。 何故なのでしょうか? コンパイラはvisual studio2008です。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- C++言語で文字列を出力するにはどうしたら良いですか。
C++言語で文字列を出力するにはどうしたら良いですか。 今、ポインタの勉強中ですが、ポインタの使い方がよく分からないです。 次のコードで ---------- one two three ---------- を出力したいのですが、nしか出力できません。 どうやらoneのnしか出力できません。 どのようなコードを書いたら解決できますでしょうか。 ------------------------------------------- #include<iostream> using namespace std; char name[3][10]={{"one"},{"two"},{"three"}}; char f(const char *name,int i){ return name[i]; } int main(){ cout << f(name[0],1) << endl; } -------------------------------------------
- ベストアンサー
- C・C++・C#
- C++
C++で書いた下記のプログラムが、文字の入力が1023個までなら実行されますが、1024個を超えると実行されません。なぜだか分かる方、教えてください。 #include <iostream> #include <string> using namespace std; int main(void) { string Str; cin >> Str; cout << "here"; }
- 締切済み
- その他(インターネット・Webサービス)
- 文字列検索について
下記のようなC++プログラムにおいて、Good Morning! の「r」以後が、 検索にひっかからないで、-1を返します。 何故なのか、どうぞよろしくお願いします。 -------------------------------------------------------- #include <iostream> #include <cstring> using namespace std; int flag = 0; // 該当文字があったかどうかのフラグ int strch_idx(const char* s, char c){ int temp; cout << strlen(s) << endl; for(int i=0; i<(signed)strlen(s); i++){ if(*s == c){ temp=i+1; // 配列のインデックスは0オリジンだが、インデックスは1からだから1+する flag = 1; break; } s++; } if(flag == 1) return temp; else return -1; } int main(){ const char* s = "Good Morning!"; int idx = strch_idx(s, 'i'); cout << "検索文字のインデックス:" << idx << endl; return 0; }
- ベストアンサー
- C・C++・C#
- 文字列の一致を確認する条件分岐でエラーなります。
どこが間違ってるのでしょうか? #include <iostream> using namespace std; int main(void) { int buffA = 1; int buffB = 10; if(buffA == buffB) { // 一致なら"true"を出力 cout << "true" << "\n"; } else { // 不一致なら"false"を出力 cout << "false" << "\n"; } return 0; } エラー内容----------------------------------- エラー: プログラム内に逸脱した '\201' があります エラー: プログラム内に逸脱した '@' があります
- ベストアンサー
- C・C++・C#
- char型配列について
基本的なことですが、 char str[5]="Hello"; --> str[0]='H' str[1]='e' str[2]='l' str[3]='l' str[4]='o' str[5]='\0' では、ないのでしょうか? エラーが出ます。 //error C2117: 'str' : 指定された配列には、初期化子が多すぎます。 char str[6]="Hello"; では、コンパイルできます。 ---------------------------------- また、 #include<iostream> using namespace std; int main() { char str[6]="Hello"; cout << str << endl; for(int i=0;i<7;i++) { cout << "i=" << str[i]; if(str[i]=='\0'){cout << " NULL" << endl;} else{cout << endl;} } getchar();return 0; } ----------------------------------------------- とすると、 Hello i=H i=e i=l i=l i=o i= NULL <--ここで、NULLなら、 i=フ <--このぶんは、いらないと思うのですが、、、 となります。 str[6] i=6 は、何を意味するのでしょうか? Visual C++ NET を使用しています。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- プログラムの動作の仕方
この下のプログラムは、WRITE <ファイル名>をコマンド行で入力すると、動作するプログラムなのですが、この通りにWRITE <test>としてもできません。 やり方を教えてください. #include <iostream> #include <fstream> using namespace std; int main(int argc,char *argv[]) { if(argc!=2){ cout << "使い方:WRITE<ファイル名>" << endl; return 1; } ofstream out(argv[1]); //出力ファイル if(!out){ cout << "出力ファイルが開けません" << endl; return 1; } char str[80]; cout << "文字列をディスクに書き込み、$で停止します" << endl; do{ cout << ": "; cin >> str; out << str << endl; }while(*str!='$'); out.close(); return 0; } お願いします。
- ベストアンサー
- C・C++・C#
- MingwでC++のソースがコンパイルできない。
質問があるのですがよろしくお願いしします。 プラットフォームは Windows HOME です。 MinGWでC++のhelloworld.cppという名前のプログラム ------ここから----------- #include <iostream> using namespace std; int main(){ cout <<"Hello World!!\n"; return 0; } -------ここまで----------- を、gcc helloworld.cpp とWindowsのコマンドプロンプトから打ってコンパイルしようとしたのですが、 undefined reference to std string::size() const undefined reference to std string::operator[](using int) const undefinrd reference to std::cout undefinrd reference to std::basic_ostream<char, std::char traits<char> >&, char const*) undefinrd reference to std::ios_base::Init::() undefinrd reference to std::ios_base::~Init::() などのエラーが出て、コンパイルできません・・ hello.cという名前のC言語プログラム --------ここから------ #include<stdio.h> int main(void){ printf("Hello GCC World on Windows!!\n"); } ------ここまで------- は、gcc hello.c で正常にコンパイルでき、生成したexeファイルも正常に動きます。 また、eclipse CDT上からc++プログラムをMinGWでコンパイルすることもできるのですが・・ なぜかWindowsのコマンドプロンプトからc++プログラムをコンパイルしようとするとエラーが出てしまいます。(C言語のプログラムでもエラーが出ることが時々あります。) どなたか詳しい方いらっしゃいましたらご教授頂けると幸いです。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- プログラミング言語Cとプログラミング言語C++
プログラミング言語Cとプログラミング言語C++の違いって何ですか? あと、プログラミング言語C++についていくつか質問があります。 #include <iostream> using namespace std; void main(){ cout << "Hello world!" << endl; } このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか? using namespace stdって何ですか? あと、 cout <<"Hello world!"って何ですか?
- ベストアンサー
- C・C++・C#
- C++でSTLを使った文字列操作
C++素人です。 第一引数で指定するファイルパスの 拡張子を.datに変更する関数を作っていますがうまくいきません。 STLの使い方が悪いのでしょうか? #include <string.h> using namespace std; char *exchange(const char *fname) { char *file; char *ex; string str; str = fname; ex = ".dat"; str.erase(str.find_last_of('.')+1); file = strcat(str, ex); return file; } int main(int argc, char *argv[]) { char *file = exchange(argv[1]); return 0; }
- 締切済み
- C・C++・C#
お礼
回答ありがとうございます。