如何解决C: 修改数组特定字符 c
在这个 C 代码中 为什么我不能更改元素 a[0] 的值而我只能输入一次? 如果我想改变元素a[0]的值怎么办?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
char a[20];
char* p;
void klam(void) {
p = a;
scanf("%c",&p[0]);
scanf("%c",&p[0]);
}
int main() {
klam();
printf("%c",a[0]);
}
解决方法
函数内
void klam(void) {
p = a;
scanf("%c",&p[0]);
scanf("%c",&p[0]);
}
元素 p[0]
被修改了两次。似乎在第二次调用中,它是由按下 Enter 键后放置在输入缓冲区中的换行符 '\n'
设置的。
这是一个说明问题的演示程序。
#include <stdio.h>
int main(void)
{
char c;
scanf( "%c",&c );
printf( "The code of the character c is %d\n",c );
scanf( "%c",c );
return 0;
}
如果输入字符A
然后按回车键,程序输出为
The code of the character c is 65
The code of the character c is 10
其中65
是字母A
的ASCII码,10
是换行符'\n'
的代码。
按如下方式重写函数
void klam(void) {
p = a;
scanf(" %c",&p[0]);
}
或者喜欢
void klam(void) {
p = a;
scanf(" %c",&p[0]);
scanf(" %c",&p[0]);
}
注意函数 %c
调用中转换说明符 scanf
前的空白。它允许跳过空格。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。