基本的な質問を失礼します。
以下のコードを実行すると、プログラムがクラッシュしてしまいます。
解決策は見つけましたが、クラッシュの原因がポインタなのか、strtok()の使い方なのか、わかりません…。
C
1//実行するとクラッシュ 2#include<stdio.h> 3#include<string.h> 4 5int main(void){ 6 char *s; 7 char *ans; 8 9 s="111101111"; 10 11 ans=strtok(s,"0"); 12 13 printf("%s",ans); 14 return 0; 15}
しかし、配列sの記述の仕方を変え、ポインタ変数を定義しそこに文字列を代入するのではなく、最初から配列として定義し、
C
1//実行可能バージョン 2#include<stdio.h> 3#include<string.h> 4 5int main(void){ 6 char s[]="111101111"; 7 char *ans; 8 9 ans=strtok(s,"0"); 10 11 printf("%s",ans); 12 return 0; 13}
とすると、無事に実行できます。
上記のような違いがあっても渡す先がstrtok()ではなく、printf()であれば問題なく実行できました。
C
1#include<stdio.h> 2#include<string.h> 3 4int main(void){ 5 char s[]="1111001111"; 6 7 char *sp; 8 sp="1111001111"; 9 10 printf("%s\n",s); 11 printf("%s\n",sp); 12 return 0; 13}
また、調べれば調べるほど配列とポインタ(文字列処理)のような情報がでてきて、ますますコードが正しいような気がしてしまいます…。
解答よろしくおねがいします。
###環境
Eclipse Cpp Mars
MinGW
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/16 22:58