Tag: scanf

在C中validation输入

我想编写一个程序,以便读取两个POSITIVE INTEGER作为输入,并拒绝用户输入除两个正整数以外的任何东西。我试图使用下面的代码,但它不起作用。 编辑1:删除了第一个scanf。 编辑2:添加了检查负值的代码。 代码不起作用: #include #include int main () { unsigned int no1,no2,temp; char check; printf(“Enter two positive integers.\n”); scanf(“%i %i %c”, &no1, &no2 ,&check); if(scanf(“%i %i %c”, &no1, &no2,&check) != 3 || check != ‘\n’){ printf(“Invalid input!!.\n”); exit(EXIT_FAILURE); } else if (no1 <= 0 || no2 <= 0) { printf("Invalid input!!.\n"); exit(EXIT_FAILURE); } […]

如何检查用户是否使用scanf输入整数

我创建了一个程序来制作*’s的钻石。 我正在寻找一种方法来检查输入的类型是否是C语言中的整数。 如果输入不是整数,我希望它打印一条消息。 这是我到目前为止: if(scanf(“%i”, &n) != 1) printf(“must enter integer”); 但是,如果消息不是整数,则不显示消息。 任何有关此问题的帮助/指导将不胜感激!

fscanf help:如何检查格式

因此,当前函数应该看到存储在两个磅符号之间的任何东西(#abc#应该给回abc),但是如果我想错误检查以查看是否有丢失的英镑符号,或者英镑符号之间没有任何内容,或者两个英镑符号之间的字符串长度大于一定数量的字符,我是否使用fscanf函数来做到这一点? 这是fscanf代码的样子: if (fscanf(fp, ” %c%[^#]%c”, &start, buffer, &end) == 3) { return strdup(buffer); } else { return NULL; }

fgets和sscanf

这段代码应该从一个finput文件中获取整数并对其进行排序,并获取文件中的第一个整数,该整数是要排序的整数,后面的整数是要排序的整数。 我不知道fgets和sscanf是如何协同工作的。 有人可以解释fgets和sscanf在这段代码中是如何工作的吗? FILE *finput; int *array_int, c1, no_elem; char numlines[500]; fgets(numlines, 500, finput); array_int = (int *)malloc(sizeof(int)*no_elem); if ((sscanf(numlines, “%d”, &no_elem) == 1) && array_int!= NULL) { for(c1=0; fgets(numlines, 500, finput) != NULL; ) { if (sscanf(numlines, “%d”, &array_int[c1])==1) { ++c1; } } }

使用sscanf阅读文本

我对sscanf函数的使用有疑问。 #include #include int main() { char a[3]; char b[4]; const char* p = “aaaaaaaaaaaaaaaaaa bbbbbb”; sscanf(p, “%2s %3s”, a, b); std::cout << a << std::endl; std::cout << b << std::endl; return 0; } 期望的输出是:aa bbb 实际输出是:aa aaa

停止fscanf?

我正在为学校写一本成绩簿计划,我对一件事感到困惑。 我们有一个要读取的文件,其中包含多个学生ID和多个分数。 会这样做: results = fscanf(gradebook, “%d %d %d %d”, id, sco1, sco2, sco3); 在读取时将数字存储到那些变量中,然后在变量用完时将光标停止以存储信息?…然后我应该直接进入计算函数来计算最终成绩,然后再将fscanf循环到fscanf中下一个学生? results = fscanf(gradebook, “%d %d %d %d”, id, sco1, sco2, sco3); getCalc(sco1, sco2, sco3); 这是允许的吗? 谢谢您的帮助。

scanf没有终止

所以,我有以下代码(C): char c = getc(in); if (c == ‘(‘) … if (c == ‘%’) … if (isdigit(c)) { int n; ungetc(c, in); scanf(“%i”, &n); … } 当我从stdin读取输入时,一切都很好,但是,当从文件中读取输入时,对scanf的调用不会终止。 我在调用周围添加了一些代码,看看在调用scanf之前发生了什么。 一个这样的例子是 c = ‘0’ c之后的人物是) ungetc之后缓冲区是否没有冲洗? 可能会发生什么,当输入是stdin时它工作正常但是当它是一个文件时它没有? (我对C中的IO并不熟悉)。 编辑:应该使用fscanf …男孩是我的脸红。

scanf()调用之后的指令被调用两次

以下程序: #include #include char input; void * dpy(void *args) { printf(“\n[input] = %c\n”, input); } void * read(void *args) { pthread_t child; printf(“Write whatever – press ‘F’ to end\n”); do { scanf(“%c”, &input); printf(“begin\n”); pthread_create(&child, NULL, dpy, NULL); pthread_join(child, NULL); printf(“end\n”); } while (input!=’F’); printf(“done\n”); } void main () { pthread_t parent; pthread_create(&parent, NULL, read, […]

在for循环中跳过scanf()

在Windows中,我使用flushall()函数来刷新所有缓冲区但这在Linux中不起作用,我的scanf()函数跳过而不扫描: for(i=0;ileft=p->right=NULL; p->data=x; p->freq=(float)probability; head=insert(head,p); } 输出: mayur@mayur-laptop:~$ ./a.out Enter alphabet :a Enter frequency :2 Enter alphabet : Enter frequency :a Enter alphabet : Enter frequency :2 Enter alphabet : Enter frequency :a Enter alphabet :

当使用和int来读取字符时,为什么值为4096 + ascii

我正在使用gcc并且正在测试使用整数或字符作为数据类型处理字符的各种方法。 int main() { int i; printf(“Enter a char: “); scanf(” %c”, &i); printf(“integer value= %d char value=%c”, i, i); return 0; } 输出: 输入char:f 整数值= 4198 char值= f 我很好奇存储的整数值。 看起来该值等于’f’的4096 + ascii值。 我的问题是为什么将4096添加到角色的ascii值? 这个价值代表什么?