【发布时间】:2015-08-28 11:24:51
【问题描述】:
以下是同一程序的两个版本。第一个有效,第二个无效。使用while (scanf()==1) 我想检查scanf。请解释一下我的错误是什么(请简单地说-我是初学者:))
#include <ctype.h>
#include <stdio.h>
#include <string.h>
int main (void)
{
char string_to_cap[90];
int i, n;
// get line of text
printf ("Please, enter a word: ");
scanf ("%89s", string_to_cap);
if (string_to_cap != NULL) // if s is not NULL than go ahead and execute the code below
{
// capitalize text
for (i = 0, n = strlen(string_to_cap); i < n; i++)
{
printf("%c", toupper(string_to_cap[i]));
}
}
printf ("\n");
}
这是第二个不起作用的:
#include <ctype.h>
#include <stdio.h>
#include <string.h>
int main (void)
{
char string_to_cap[90];
int i, n;
// get line of text
printf ("Please, enter a word: ");
while (scanf ("%89s", string_to_cap) == 1);
{
// capitalize text
for (i = 0, n = strlen(string_to_cap); i < n; i++)
{
printf("%c", toupper(string_to_cap[i]));
}
}
printf ("\n");
}
【问题讨论】:
-
也许删除
while (scanf() ==1)之后的分号? ;-) -
在你的第一个例子中:string_to_cap 永远 (!) NULL
-
稍后删除分号。使用这种编码方法,您的条件永远不会错误。
-
string_to_cap怎么可能是NULL? -
while 循环有分号,如果这是您的要求,那么只需在输入后输入 ctrl+z。然后它会工作。