-2

这是我的问题。在我输入一些输入并点击回车后,程序立即执行。我发现问题是由于我使用的 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]

如果您要获取一个字符串,请调用scanf一次,而不是循环调用:

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

一个问题可能是你的 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 回答