gpt4 book ai didi

无法将字符放入 C 中的字符数组中

转载 作者:行者123 更新时间:2023-11-30 18:27:33 25 4
gpt4 key购买 nike

我想创建和操作一个字符数组。我不想使用字符串。这是我的 C 语言代码:

int main(int argc, char *argv[]) {
char s[4];
int i;
for(i = 0; i < 4; i++){
printf("Character at %d : ",i);
scanf("%c",&s[i]);
printf("%c",s[i]);
}
return 0;
}

当我执行它时,似乎:

  • 编译器从 i 处的元素跳转数组中的元素位于 i+2
  • 数组中未添加任何内容。数组保持为空

我想了解 scanf("%c",&s[i]); 有什么问题我认为正是该指令导致了此代码中的问题。

最佳答案

scanf() 无法按您的预期工作。 scanf() 还将您按下的输入视为字符。如果您坚持使用 scanf(),这里有一些针对您当前代码的解决方法。

方法一

int main(int argc, char *argv[]) {
char s[4];
char enter;
int i;
for(i = 0; i < 4; i++) {
printf("Character at %d : ",i);
scanf("%c", &s[i]);
scanf("%c", &enter);
printf("%c \n", s[i]);
}
return 0;
}

方法2

使用相同的代码,但一次输入所有四个字符。

int main(int argc, char *argv[]) {
char s[4];
int i;
for(i = 0; i < 4; i++) {
printf("Character at %d : ",i);
scanf("%c", &s[i]);
}
for(i = 0; i < 4; i++) {
printf("\n %c", s[i]);
}
return 0;
}

输出如下:

Character at 0 : abcd
Character at 1 : Character at 2 : Character at 3 :
a
b
c
d

方法3

正如Xing所述在评论中,这看起来是实现它的更好方法。但请确保记下 scanf()%c 之前添加的空格。

int main(int argc, char *argv[]) {
char s[4];
int i;
for(i = 0; i < 4; i++) {
printf("Character at %d : ",i);
scanf(" %c", &s[i]); // Note the whitespace before %c
printf("\n %c", s[i]);
}
return 0;
}

关于无法将字符放入 C 中的字符数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54809028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com