- 締切済み
教えてください
入力した文字列のスペースをすべて取り除く関数を返すのですが、分かりません。(例)a s d fと入力したら、asdfと表示します。途中まで考えたのですが、どうしてもできません。教えてください。宜しくお願いします。(このソースは、コンパイルエラーです。) 14: 移植性のないポインタ変換(関数a) #include <stdio.h> char a(char *st) { char *ptr=st; while(*st!='\0') { if (*st != ' ') { *ptr++=*st; } } *ptr='\0'; return(ptr); } int main(void) { char str[21]={'\0'}; int i=0; char ch; printf("文字列を入力してください:"); while(i<21) { ch=getchar(); if (ch=='\n') {break; } else if (ch != '\0' && ch != '\n') { str[i] =ch; i++; } } str[i] = '\0'; printf("%s",a(str)); return(0); }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- moritan2
- ベストアンサー率25% (168/670)
a()は途中までできてるのに、最期に返すものが、、、
- naoeshinjo
- ベストアンサー率20% (55/275)
main関数はともかく、a関数がね・・・ ポインタの概念を思い出して、整理する事をオススメします。 (やろうとしている事は判るけどね)
補足
コンパイルはできたのですが、どうしても、a s d f と入力したら、すぐ、終了してしまいます。分からないので、教えてください。宜しくお願いします。
- PROMETHEUS
- ベストアンサー率58% (31/53)
エラーになるのは関数 aの戻り値の型が char型になっているからではないでしょうか。 関数 aのローカル変数 ptrの型である char *型を戻り値の型にすればコンパイルは通るはずです。
補足
コンパイルはできたのですが、どうしても、a s d f と入力したら、すぐ、終了してしまいます。分からないので、教えてください。宜しくお願いします。
補足
コンパイルはできたのですが、どうしても、a s d f と入力したら、すぐ、終了してしまいます。分からないので、教えてください。宜しくお願いします。