scanf("%c",&a[i]);scanf("%c",a[i]);哪个是对的?
时间: 2024-01-08 13:20:20 浏览: 99
scanf()函数释疑
4星 · 用户满意度95%
引用[1]中的两个代码片段`while(scanf("%d%d", &i, &j) == 2)`和`while(~scanf("%d%d",&a,&b))`的差别在于条件判断部分。第一个代码片段使用了`scanf`函数的返回值来判断输入是否成功,如果成功则返回2,否则返回其他值。而第二个代码片段使用了位运算符`~`对`scanf`函数的返回值取反,如果输入成功则返回-1,否则返回其他值。
引用中的代码`scanf("%c", &a)`并没有执行输入操作,而是直接跳过了。这是因为在前面的输入操作中,可能留下了一个换行符(`\n`)在输入缓冲区中。当执行`scanf("%c", &a)`时,它会读取输入缓冲区中的下一个字符,而不会等待用户输入。因此,它会读取到之前留下的换行符,而不是用户想要输入的字符。
对于`scanf("%c",&a[i]);scanf("%c",a[i]);`这两个代码片段,正确的写法是`scanf("%c",&a[i]);`。在`scanf`函数中,`%c`用于读取一个字符,并将其存储到变量`a[i]`中。因此,第一个`scanf`语句是正确的,可以读取一个字符并存储到`a[i]`中。而第二个`scanf`语句中的参数`a[i]`缺少了取地址符`&`,因此是错误的写法。
阅读全文