- ベストアンサー
文字列での判定
ファイルポインタの勉強を始めました。 練習として「入力された文字列をsave.txtに保存するただし、endが入力された場合、ループを抜ける」というプログラムを書きたいのですが、うまくできません。結果的には aiueo,kakikukeko と二つの文字列を出力したいです。 見にくいソースですが、ご教授の方、お願いします。 #include <stdio.h> #include <stdlib.h> main(){ FILE *fp; char input[256],input2[256]; if((fp=fopen("save.txt","at"))==NULL){ fprintf(stderr,"ファイルオープンに失敗しました"); exit(1); } do{ printf("文字列を入力してください"); scanf("%s",input); scanf("%s",input2); fprintf(fp,"%s,%s",input,input2); }while(input!="end" || input2!="end"); }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
文字列の扱い方が理解できていないようです。 C/C++ で文字列が一致するかどうかは 文字列関数をを使う必要があります。 int strcmp(char *str1, char *str2); while(input!="end" || input2!="end"); では、文字列ではなく文字列か格納されているポインタを比較していることになるので、必ず真となり、ループから抜けてしまいます。
その他の回答 (1)
- SilverThaw
- ベストアンサー率32% (260/806)
>うまくできません。 「何が」うまくできないのかははっきりと記載すること。 とりあえずここ >while(input!="end" || input2!="end"); 比較式では文字列の比較はできない。 memcmp()やstrcmp()等の比較関数を使用する必要がある。