Shiftleftという関数を用いて、各文字列を左に一文字ずらし、先頭の文字を一番後ろにくっつけるという課題なんですが、
C
1#include<stdio.h> 2 3void shiftleft(char (*str)[16] , int n){ 4 5 int a , b = 0 , c ; 6 char tmp; 7 for(a = 0 ; a < n ; a++){ 8 while((*str[b]) != '\0'){ 9 b++; 10 } 11 tmp = (*str[0]); 12 for(c = 0 ; c < b ; c++){ 13 (*str[c]) = (*str[c]) + 1 ; 14 } 15 (*str[b-1]) = tmp; 16 b = 0; 17 str++; 18 } 19} 20 21int main(){ 22 int i ; 23 int j; 24 char str2[4][16] = {"Tokyo" , "Osaka" , "Fukuoka" , "Nagoya" }; 25 26 printf("文字列を出力します\n") ; 27 for(i = 0 ; i < 4 ; i++){ 28 printf("%s\n" , str2[i] ); 29 } 30 31 j = sizeof(str2) ; 32 printf("配列の大きさは%dバイトです。\n" , j); 33 34 35 shiftleft(str2 , 4); 36 37 38 printf("文字列を出力します\n") ; 39 for(i = 0 ; i < 4 ; i++){ 40 printf("%s\n" , str2[i] ); 41 } 42 43 return 0; 44 45} 46
出力結果を見ると、そもそも文字列をずらすことすらできていません。
2次元配列をポインタで渡した時の操作があまり理解できてないのでご協力をお願いしたいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/30 04:08