过去我学过几种语言,我认为学习C语言是个好主意。
我在使用scanf时有点麻烦...
这是代码:
#include <stdio.h>
#include <string.h>
int main(){
char name[20];
char yn;
printf("Welcome to Benjamin's first C programme! \n\n");
printf("What is your name? \t"); scanf("%s", name); printf("\n");
printf("Is your name %s? [y/n]", name); scanf("%s", yn);
}
我遇到问题:scanf("%s", yn)
答案 0 :(得分:2)
执行以下操作:
printf("Is your name %s? [y/n]", name); scanf("%c", &yn);
新的scanf所做的是“期待一个字符”并将其放在yn
的地址中答案 1 :(得分:2)
阅读char使用
scanf("%c",&yn);
答案 2 :(得分:1)
scanf()
只能将指针作为参数。 name
是一个数组,因此根据定义它是一个指针,但yn
不是。您必须将其转换为&yn
,指向yn
的指针,以便scanf()
读取它。
此外,yn
只能保存一个char
,而不是name
中的字符数组,因此您必须告诉scanf()
您想要阅读%c
{1}}表示单个字符,而不是%s
表示以空字符结尾的字符串,因为如果这样做,您很可能会覆盖堆栈并遇到麻烦。
话虽如此,请改用scanf("%c", &yn);
。
答案 3 :(得分:0)
或做好准备并做一个简单的malloc(但这不是更好的选择)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char name[20];
char *yn;
yn = (char*) malloc(sizeof(char)*2);
printf("Welcome to Benjamin's first C programme! \n\n");
printf("What is your name? \t"); scanf("%s", name); printf("\n");
printf("Is your name %s? [y/n]", name); scanf("%s", yn);
}