C言語でポインタについて質問です。以下のコードは小文字を大文字に変換するプログラムです。
main関数で配列の文字列を宣言した際に、その配列をポインタなしで、そのまま、関数に受け渡しして、変換するようにはできませんか?
以下のコードでいえば、
char型bufferのアドレスの値を*ptrに代入せずにそのまま、bufferとして関数に受け渡しできるようにしたい。ということです。
たとえば 関数 change_letter(char buffer)として、文字列を受け取り、受け取った文字列をchange_letterの関数内で大文字に変えて出力をする。という感じにしたいです。
他のサイトを見てみると、メイン関数内で実行か、ポインタで関数の受け渡しの二通りしかないので、まだ初心者なのでどのように実行すればよいかわからないです。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void change_letter(char* str) { *str = *str - 'a' + 'A'; } void main() { char buffer[128]; char* ptr = buffer; scanf("%s", buffer); printf("%s\n", ptr); while (*ptr != 0) { change_letter(ptr); ptr++; printf("%s\n", buffer); } }
以下が自分の実行したいコードです。change_letter(buffer)でエラーがでて、どのように解決できればよいかわからない状態です。ご協力お願いします。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void change_letter(char buffer ) { while (buffer != 0) { buffer = buffer - 'a' + 'A'; printf("%s\n", buffer); } } void main() { char buffer[128]; scanf("%s", buffer); printf("%s\n", buffer ); change_letter(buffer); }
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。