- ベストアンサー
printf
sqliteのソースコードを見ています。 私にとっては変な printf()です。 printf("%s = %s\n", azColName}; hd_resolve_one {i}; hd_puts {, argv}; hd_resolve_one {i}; hd_puts { ? argv}; hd_resolve_one {i}; hd_puts { : "NULL"); VC++での printfに書き換えるにはどうすればよいのでしょうか? よろしくご指導ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
関連するQ&A
- printfの書式%.*s
海外のサイトに掲載されているサンプルコード中のprintfの書式がわかりません。 printf("%2d: %.*s\n", i, ovector[2*i+1] - ovector[2*i], str + ovector[2*i]); PCREのサンプルの中に出てくるコードですが、上記の「%.*s」は、どういった意味になりますか? よろしくお願いいたします。 http://stackoverflow.com/questions/1421785/how-can-i-use-pcre-to-get-all-match-groups
- ベストアンサー
- C・C++・C#
- printfが!
int main(void){ .... while(!(i==EOF)){ num=0; while((i=fgetc(stream))!='\n'){ if(i==EOF) break; str[num]=i; num++; } kannsuu1(); kannsuu2(); } return 0; void kannsuu1(void){ printf("出力されない"); for(i=0;str[i]!=NULL;i=i+2){ printf("%c%c",str[i],str[i+1]);/*これも出力されない*/ } } void kannsuu2(void){ .... } 簡単に上記のように記述したプログラムがあるのですが、コンパイラの警告はまったくかかりませんでしたが、関数の中のprintfがdosプロンプトに出力されないのですよ。だれか心あたりがありましたらおしえてもらえないでしょうか? お願いいたします。
- ベストアンサー
- C・C++・C#
- Cでファイルの行数をカウントするには
ファイルの中の行数をカウントするにはどうすればよいか プログラムの行数ならその行数分だけ またコメントや空白行もカウントするにはどうしたらよいか 以下のプログラムに追加したい場合どうしたらよいか教えてください。 #include <stdio.h> int main(int argc , char *argv[]){ char s[256]; int i; FILE *fin; int local; int nCount = 0; for(i = 1 ; i < argc ; i++){ printf("%s\n",argv[i]); local = 0; fin=fopen(argv[i],"r"); memset(s,0,sizeof s); while(fgets(s,sizeof s,fin) != NULL){ // printf("%s",s); local++; nCount++; } memset(s,0,sizeof s); while(fgets) printf("local count = %d\n",local); fclose(fin); } printf("grobal count = %d\n",nCount); return 0; }
- 締切済み
- C・C++・C#
- 値を変数に代入してprintfで表示しようとしてもうまくいきません
値を変数に代入して、printfで表示しようとしてもうまくいきません。 ソースのどこが悪いか教えていただけないでしょうか? 変数の値を1個ずつ表示する場合は、正常になります。 問題は、1行で表示する場合に1個目の値は出るのですが正常な表示にはなりません。 //ソース開始 #include <stdio.h> #include <windows.h> int main() { LARGE_INTEGER i64,h64; LONGLONG work,h,m,s; QueryPerformanceCounter(&i64); QueryPerformanceFrequency(&h64); //起動時間をミリ秒取得 work = i64.QuadPart*1000 / h64.QuadPart; //時間をhに入れる h = work / 1000 / 3600; //分をmに入れる m = (work / 1000 - h * 3600) / 60; //秒をsに入れる s = work / 1000 - h * 3600 - m * 60; //表示 printf("%d時間%02d分%02d秒\n",h,m,s); printf("%d時間\n",h); printf("%d分\n",m); printf("%d秒\n",s); printf("%d秒\n",work); return 0; } //ソースここまで //実行結果 289時間00分55秒 289時間 55分 54秒 1043754590秒 続行するには何かキーを押してください . . . //理想の表示結果 1行目が以下のようになってほしい 289時間55分54秒
- ベストアンサー
- C・C++・C#
- 文字列処理
513404250001969199219952002000340000134300003405001343730… 上のような文字列をバイト数を指定して分割するプログラムを以下の様に書いたところ画像の様な結果になってしまいます。NULL文字が関係しているのではと思い、分割後の文字列にNULL文字を付与してみましたが解決しません。ご指導よろしくお願いします。 【プログラム】 int head(char *hd){ 44 #define knum 6 45 #define ini 23 46 char splith[knum][9]; 47 char null[2]={'\0'}; 48 int dev[knum] = {3,3,7,7,7,7}; 49 int i; 50 int sum; 51 sum = ini; 52 for(i=0;i < knum;i++){ 53 //printf("%d\n",dev[i]); 54 //printf("%d\n",sum); 55 strncpy(&splith[i][0],hd + sum,dev[i]); 56 strcat(&splith[i][0],null); 57 printf("%d is %s\n",i,&splith[i][0]); 58 sum += dev[i]; 59 } 60 }
- ベストアンサー
- C・C++・C#
- printfするのとしないのとで実行結果が異なる
現在、ようやくC言語にも慣れてきてソースが自力で書けるようになってきた者です。ところが、ちょっとした問題に悩んでいます。 当該ソースは以下のとおりです。 #include<stdio.h> int main(void){ #define NINZU 5 int i,j,k,temp,va[NINZU]; for(i=0;i<NINZU;i++){ printf("va[%d]=",i); scanf("%d",&va[i]); } for(j=0;j<NINZU;j++){ for(k=0;k<NINZU;k++){ if(va[k]<va[(k+1)]){ printf("比較材料 %d\n",va[k]); printf("比較相手 %d\n",va[(k+1)]); temp=va[k]; va[k]=va[(k+1)]; va[(k+1)]=temp; } } } printf("1番の人 : %d\n",va[0]); printf("2番の人 : %d\n",va[1]); return 0; } 簡単なソースで、入力された5個の数値を並び替え1位と2位を表示するというものなのですが、実行結果が、「比較材料・比較相手」というprintfを外すと、「1番の人」の表示がどんな値を入力しても1245056になってしまいます。 printfが入っていれば正常に表示されるのですが… 大至急、知りたいです!!!
- ベストアンサー
- C・C++・C#
- C言語で、ファイルを読み込んで数字と名前に分けて配列に格納に関する質問
C言語で、ファイルを読み込んで数字と名前に分けて配列に格納に関する質問です! ファイルを開いた後でエラーとなるのですが、何が足りないのでしょうか? ファイル内容 20 田中 10 鈴木 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc,char *argv[]) { FILE *fp; char str[256]; char *tp; int k,i=0; int num[10]; char na[10][20]; fp=fopen(argv[1],"r"); if(fp==NULL){ printf("ファイルを開けません\n"); return 1; }else{ printf("開けた\n"); } while(fgets(str,sizeof str,fp)!=NULL){ tp=strtok(str," "); num[i]=atoi(tp); tp=strtok(NULL," "); strcpy(na[i],tp); i++; } printf("%d\n%s\n",num[0],na[0]); printf("%d\n%s\n",num[1],na[1]); fclose(fp); return 0; }
- ベストアンサー
- C・C++・C#
- 任意のファイルを別のファイルにコピーするプログラム。
コマンドラインからコピー元、コピー先ファイル名を指定してファイルをコピーするプログラムなんですが… #include <stdio.h> #include <stdlib.h> main(int argc, char *argv[]) { FILE *fp; if ((fp = fopen(argv[0],"r") == NULL){ printf("ファイル%sが存在しません。\n",argv[0]);exit(-1); } if ((fp = fopen(argv[1],"w") == NULL){ printf("ファイル%sがコピーできません。\n",argv[1]);exit(-1); } fclose(fp); } どこか間違っているところがあるでしょうか? ありましたら詳しく教えてもらえると幸いです。 少し自信がないのでわかる方はよろしくおねがいします。
- ベストアンサー
- C・C++・C#
- c言語を用いた文書検索に関する質問です。
いつもお世話になっています。 c言語にあまり詳しくないので、どなたか詳しい方お願いします。 今回、ディレクトリの複数文書内で特定の単語(今回はクエリと呼びます)を含む文書を探し出すして、テキストファイル名を表示する処理を行うプログラムを作成していました。 以下に添付したソースは、コンパイル自体は通るのですがコマンドラインを ./ex12 "green" corpus/*.txt と入力するとsegmentation faultとなってしまいます。 (ex12は実行ファイル名、greenに特に意味はありません。別の単語でも同じ結果が出てしまいます。) 複数ファイルではなく1つの文書内での検索は問題なかったのですが、何が原因なのかがよく分かりません。 1つの文書内検索の際は、メインループの最初のfor文を除いての処理となります。 printfを用いていろいろ試した結果、ファイル自体はきちんと読み込めているようなのでfor文を入れたのが原因ではないようなのですが・・・。 ちょっと原因が分からなくて詰まってしまったので、どなたか詳しいかたよろしくお願いします。 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> int main(int argc, char* argv[]){ FILE* fp; char buffer[2048]; char kueri[256]; char* s; char* delimiter = " .,"; //単語の区切れの定義 int i; int flag = 0; /*コマンドラインが正しく入力されているかの確認*/ if(argc < 3){ printf("error1\n"); exit(1); } /*入力されたクエリをkueriに格納する*/ strcpy(kueri,argv[1]); /*英小文字を英大文字に変換する処理を\0まで繰り返す*/ s = kueri; while(*s != '\0'){ *s = toupper(*s); s++; } /*メインループ*/ for(i = 2; i < argc; i++){ /*ファイルを開く*/ if((fp = fopen(argv[i], "r")) == NULL){ printf("error2"); exit(1); } while(fgets(buffer,sizeof(buffer),fp) != NULL){ /*最後に\0を格納する*/ buffer[strlen(buffer)-1] = '\0'; /*英小文字を英大文字に変換する処理を\0まで繰り返す*/ s = buffer; while(*s != '\0'){ *s = toupper(*s); s++; } /*strtokを用いて単語毎に区切っていく(1単語目)*/ s = strtok(buffer,delimiter); if(strcmp(s,kueri) == 0){ printf("入力されたクエリを文書内に発見しました。\n"); printf("file name: %s\n",argv[i]); flag = 1; }else{ /*strtokを用いて単語毎に区切っていく(2単語目以降)*/ while((s = strtok(NULL, delimiter)) != NULL){ if(strcmp(s,kueri) == 0){ printf("入力されたクエリを文書内に発見しました。\n"); printf("file name: %s\n",argv[i]); flag = 1; } } } } fclose(fp); } if(flag == 0){ printf("クエリを文書内に発見できませんでした。\n"); } exit(0); }
- ベストアンサー
- C・C++・C#
- 2進数の乗算と除算
先日、桁上がりについて質問させていただいた者です。 加算と減算はなんとか完成したのですが、乗算と除算になって混乱してしまいました。 二進数の乗算、除算はビットシフトと関係がありますが、私の作っているものの場合はどのようなソースコードにすればよいでしょうか? (ちなみに、bの値は2のべき乗に限定しています。) int main(void) { int a,b,i; int x[8],y[8]; puts("二つの符号なし整数を入力してください。(ただしa>bとし、bは2のべき乗の値とする)"); printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); printf("\n"); /*二進数の形に変換*/ for(i=0;i<=7;i++){ x[i]=a%2; a=a/2; y[i]=b%2; b=b/2; } puts("aとbをそれぞれ二進数で表すと"); printf("a="); for(i=7;i>=0;i--){ printf("%d",x[i]); } puts(""); printf("b="); for(i=7;i>=0;i--){ printf("%d",y[i]); } printf("となります。\n\n"); return(0); }
- ベストアンサー
- C・C++・C#
お礼
確認しました。 何とか動き始めました。 ありがとうございました。