这是我的问题。我输入一些输入后立即点击进入程序执行。我有些想知道问题是由于我正在使用的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");
}
答案 0 :(得分:5)
您正在尝试读取101个字符串%s
,但您为100个字符分配了空格。 1}}将字符而不是字符指针传递给scanf
,导致崩溃。
如果您要阅读100个字符,则应在格式行中传递%c
,和 scanf
调用的参数部分中的地址
scanf("%c", &myString[i]);
您还应该将<=
替换为<
,或者分配myString[101]
。
如果您想获得一个字符串,请拨打scanf
一次,而不是循环播放:
scanf("%99s", myString); // myString is the same as &myString[0]
在将任何数据放入字符数组之前,您还要读取第6个字符。在for
循环后,该值不会改变。
答案 1 :(得分:2)
您使用的是字符串格式(%s
),但是传递了字符myString[i]
。那不好。
答案 2 :(得分:0)
一个问题可能是你的for循环:
for(i=0; i<=100; i++){
scanf("%s", myString[i]);
}
您只有100个元素,但访问101。
此致 罗杰
答案 3 :(得分:0)
你应该写:
for(i = 0; i < 100; i++)
{
scanf("%c", &myString[i]);
}
或者:
scanf("%s", &myString);
btw,下面的一行:
char myChar = myString[6];
它应该在调用'scanf'后放置,否则mychar将始终为'c'