Tag: scanf

我们如何测试scanf()函数的返回值?

我想确认scanf()函数返回的值是否为浮点数。 我怎样才能做到这一点? 如果向scanf()函数提供了错误的数据类型,我的代码就不会运行。 同样,我如何确认返回的值是否是字符串?

读取c中由tab分隔的文件

我是C的新手,读取文件的东西让我发疯…我想读一个包括姓名,出生地和电话号码等文件。所有这些都是用标签分隔的 格式可能是这样的: Bob Jason Los Angeles 33333333 Alice Wong Washington DC 111-333-222 所以我创建了一个结构来记录它。 typedef struct Person{ char name[20]; char address[30]; char phone[20]; } Person; 我尝试了很多方法将这个文件读入struct但它失败了。 我厌倦了: read_file = fopen(“read.txt”, “r”); Person temp; fread(&temp, sizeof(Person), 100, read_file); printf(“%s %s %s \n”, temp.name, temp.address, temp.phone); 但是char字符串没有记录到由tab分隔的temp中,它将整个文件读入temp.name并获得奇怪的输出。 然后我尝试了fscanf和sscanf,那些都不适用于分离标签 fscanf(read_file, “%s %s %s”, temp.name, temp.address, temp.phone); 要么 fscanf(read_file, “%s\t%s\t%s”, […]

使用%c 奇数循环不起作用

我倾向于C编程。 我写了一个奇怪的循环,但在scanf()使用%c不起作用。 这是代码: #include void main() { char another=’y’; int num; while ( another ==’y’) { printf(“Enter a number:\t”); scanf(“%d”, &num); printf(“Sqare of %d is : %d”, num, num * num); printf(“\nWant to enter another number? y/n”); scanf(“%c”, &another); } } 但是如果我在这段代码中使用%s ,例如scanf(“%s”, &another); ,然后它工作正常。 为什么会这样? 任何的想法?

C:如何防止使用scanf溢出输入?

我对C比较陌生,想知道如何防止输入溢出…… 例如,我有: scanf(“%d”, &a); 其中a是整数。 那么我能做些什么来阻止某人输入一个大于最大整数的数字呢? 由于我正在处理的问题的限制,你必须使用scanf 。 我如何限制输入? 提前致谢。

在scanf中使用的目的是什么?

我遇到了一些代码,并想知道最初的开发人员是做什么的。 以下是使用此模式的简化程序: #include int main() { char title[80] = “mytitle”; char title2[80] = “mayataiatale”; char mystring[80]; /* hugh ? */ sscanf(title,”%[^a]”,mystring); printf(“%s\n”,mystring); /* Output is “mytitle” */ /* hugh ? */ sscanf(title2,”%[^a]”,mystring); /* Output is “m” */ printf(“%s\n”,mystring); return 0; } scanf的手册页有相关信息,但我无法阅读它。 使用这种表示法的目的是什么? 它想要完成什么?

为什么scanf似乎跳过输入?

我对以下程序中scanf的行为感到困惑。 scanf似乎输入一次,然后不再输入,直到打印出一串字符。 下面是C程序 #include int main() { int i, j=0; do { ++j; scanf(“%d”, &i); printf(“\n\n%d %d\n\n”, i, j); } while((i!=8) && (j<10)); printf("\nJ = %d\n", j); return 0; } 在这里,直到我输入任何整数程序工作完全正常,但是当输入一个字符时,它继续打印i的最后一个输入值并且永远不会停止(直到循环退出时j为10),以便scanf接受下一个输入。 output:: 1 <—–1st input 1 1 2 <—- 2nd input 2 2 a <—- character input 2 3 2 4 2 5 2 6 […]

scanf()跳过变量

在C中,使用带参数的scanf() , scanf(“%d %*d”, &a, &b)行为不同。 它仅为一个变量而不是两个变量输入值! 请解释一下! scanf(“%d %*d”, &a, &b);

C:为什么没有&for scanf()函数中的字符串?

可能重复: 为什么scanf不需要字符串的&符号,也适用于printf(在C中)? 在C中,当我们使用scanf()函数获取用户输入时,我们总是在变量前使用&符号。 例如: scanf(“%d”, &number); scanf(“%c”, &letter); 这可确保我们的输入存储在适当的地址中。 但是如果是字符串,我们不使用& 。 这是为什么?

scanf()好奇的行为!

我最近偶然发现了一个奇怪的案例(至少对我来说,因为我之前没遇到过这个)。考虑下面的简单代码: – int x; scanf(“%d”,&x); printf(“%d”,x); 上面的代码采用正常的整数输入并按预期显示结果。 现在,如果我将上面的代码修改为以下代码: – int x; scanf(“%d “,&x);//notice the extra space after %d printf(“%d”,x); 这会在它给出printf语句的结果之前接受另一个额外的输入。我不明白为什么空格会导致scanf()的行为发生变化..任何人都可以向我解释这个….

sscanf用法 – 如何validation已完成扫描与中止扫描

我的数据库提供了一个文本文件,其中包含打开和关闭”分隔符公式。公式集非常有限,一旦识别就很容易实现。我尝试使用scanf获取参数,我想使用分隔符”来提供scanf失败的机制。 在下面的示例中,将忽略最后一个分隔符,并且丢失未找到分隔符的信息。 如果sscanf能够匹配整个字符串,我该如何控制? #include #include unsigned printIdentity(const char * formula){ unsigned e = 0, found = 0; double a, b; printf(“————-\n”); printf(“INVESTIGATING: %s\n”, formula); if( ( 2 == sscanf_s( formula, ” \” X * %lf %lf \” “, &a, &b, sizeof( double ), sizeof( double ) ) ) ){ printf(“MATCH: X * %lf + %lf\n”, […]