-2

これが私の問題です。入力を入力してEnterキーを押すとすぐに、プログラムが実行されます。そして、問題は私が使用していたforループが原因であることがどういうわけかわかりました。これがコードです。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

main(){


 char myString[100]; 
 char myChar = myString[6];
 int i;

 for(i=0; i<=100; i++){
    scanf("%s", myString[i]);
 }

 printf("%c\n", myChar); 
 system("pause");

}
4

4 に答える 4

5

101文字列を読み取ろうとして%sいますが、100文字にスペースを割り当てました。文字ポインタの代わりに文字をに渡すとscanf、クラッシュが発生します。

100文字を読み取ろうとしている場合は%c、フォーマット行scanf、呼び出しのパラメーター部分にアドレスを渡す必要があります。

scanf("%c", &myString[i]);

また、に置き換えるか、を割り当てる必要が<=あり<ますmyString[101]

1つの文字列を取得する場合はscanf、ループではなく1回呼び出します。

scanf("%99s", myString); // myString is the same as &myString[0]

また、文字配列にデータを配置する前に、6番目の文字を読み取っています。その値は、forループ後に変更されることはありません。

于 2012-07-20T11:20:29.973 に答える
2

文字列形式(%s)を使用していますが、文字を渡していますmyString[i]。それは良くありません。

于 2012-07-20T11:21:20.260 に答える
0

1つの問題は、forループである可能性があります。

for(i=0; i<=100; i++){
    scanf("%s", myString[i]);
 }

要素は100個しかありませんが、101にアクセスしています。

よろしくロジャー

于 2012-07-20T11:24:07.437 に答える
0

あなたは書くべきです:

 for(i = 0; i < 100; i++)
 {
    scanf("%c", &myString[i]);
 }

または:

scanf("%s", &myString);

ところで、以下の行:

char myChar = myString[6];

'scanf'が呼び出された後に配置する必要があります。そうしないと、mycharは常に'c'になります。

于 2012-07-20T14:17:09.433 に答える