C言語の勉強をしています。
下記は、受け取った文字列を逆にして出力するプログラムです。
mallocを使用せずに、文字数を変数に格納して、それを配列の宣言に利用しています。
私の環境ではコンパイルして動きますが、このような書き方は問題ないのでしょうか。
c
1#include <stdio.h> 2 3char *ft_strrev(char *str) 4{ 5 6 int len = 0; 7 char *strrev; 8 9 // 受け取った文字列の文字数をカウントする 10 while(str[len] != '\0'){ 11 len++; 12 } 13 14 // 文字数の分の配列を宣言し、領域を確保する。 15 // 確保した配列のアドレスを変数に渡す。 16 char tmp[len]; 17 strrev = tmp; 18 int i =0; 19 20 // 配列に逆順に文字を格納していく。 21 while(len > 0){ 22 strrev[i] = str[len-1]; 23 i++; 24 len--; 25 } 26 strrev[i] = '\0'; 27 return strrev; 28} 29 30int main(void) 31{ 32 char *str; 33 char a[] = "Aiueo"; 34 str = a; 35 str = ft_strrev(str); 36 printf("%s\n", str); 37 return 0; 38}

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/03 03:54