【发布时间】:2019-10-04 15:47:47
【问题描述】:
我有以下字符串要从 scanf 函数中读取
1041657W 324944N 河畔
如果我调用 scanf():
uint32_t N = 0;
char Ch = 'z';
char Name[100];
scanf("%d %c %s", &N, &Ch, Name);
变量的值如下
N = 1041657
Ch = 'W'
Name = "324944N"
我不确定这些值是如何被扫描的。你能告诉我每个变量如何显示给定的值吗?
【问题讨论】:
-
%d读取一个数字(停在W),%c读取一个字符(W),%s读取一个字符串(停在空白处)。 -
@hmm 是的,这是一个错字,谢谢。我的意思是从给定的字符串中扫描所有内容。
-
该问题旨在使用 scanf();但是,它是完全有效的(使用 printf())。您需要进行两个关键观察: printf() 无法更改存储在任何变量中的值 由于 Name[] 未初始化,因此无法保证其具体内容
-
@JDog1999 您需要开始阅读初学者的 C 教科书。 “我对 char Ch = 'z' 和 char Name[100] 的作用感到困惑”:这是最基本的 C 知识。
char Ch = 'z';声明了一个 char 变量并使用 ASCII 值对其进行初始化字母 z。char Name[100];声明了一个 100 个字符的数组。 -
@JDog1999,是的,当然字符串可以包含空格,但空格被视为带有
%s说明符的分隔符。阅读scanf规范。