Tag: scanf

Scanf跳过循环(Hangman)

该程序基本上要求一个秘密字符串,然后要求用户重复猜测该字符串的单个字符,直到他猜到这一切。 然而,它每隔一次运行while循环就会工作,它会跳过猜测字符的用户输入。 我该如何解决? int main(){ char guess; char test2 [50]; char * s = test2; char output [50]; char * t = output; printf(“Enter the secret string:\n”); fgets(test2, 50, stdin); for (int i=0;i<49;i++){ //fills ouput with _ spaces *(output +i)='_'; while(strcmp(s,t) != 0){ printf("Enter a guess:"); scanf("%c",&guess); printf("You entered: %c\n", guess); showGuess(guess,s, t ); // […]

使用fscanf()读取多个值(如下面的文本文件中所示)

新来的fscanf()… plz帮助 程序 #include typedef struct { int rollnum; char name[30]; int mark1; int mark2; int mark3; }data; int main(int argc,char* argv[]) { int total,c1,c2,i; char str[30]; FILE *original,*pass,*fail; data *student; original=fopen(“C:\\Users\\user\\Desktop\\struct.txt”,”r”); pass=fopen(“C:\\Users\\user\\Desktop\\pass.txt”,”w”); fail=fopen(“C:\\Users\\user\\Desktop\\fail.txt”,”w”); for(i=0;irollnum, (student+i)->name, &(student+i)->mark1, &(student+i)->mark2, &(student+i)->mark3); total=student[i].mark1+student[i].mark2+student[i].mark3; if(total>50) fprintf(pass,”%d. %s %d\n”,c1,student[i].name,total); else fprintf(fail,”%d. %s %d\n”,c2,student[i].name,total); c1++,c2++; } printf(“Successful\n”); fclose(original); fclose(pass); fclose(fail); return […]

这个scanf()出了什么问题?

我是以某种错误的方式使用scanf()吗? char *input; scanf(“%s”, input); printf(“%s\n”, input); 这在运行时失败了。

在C中使用多个scanf时,使用scanf忽略空格的问题

我试图在一个小程序中多次使用scanf来获取保证有空格的输入。 从我浏览的多个线程看起来像scanf(“%[^\n]”, string); 是让它忽略空间的方法。 这适用于一行,但该行之后的任何其他scanf都没有通过,它们各自的字符串显示如下: Action: J J Resolution: J:F J B J 这是一些我认为可行的示例代码,但没有。 #include int main(void) { char str1[100]; char str2[100]; printf(“Situation?\n”); scanf(“%[^\n]”, str1); printf(“Action Taken?\n”); scanf(“%[^\n]”, str2); printf(“Situation: %s\n”,str1); printf(“Action: %s\n”,str2); } 如果在提示输入情况时输入“Just a test”,则会发生以下情况: Situation? just a test Action Taken? Situation: just a test Action: _ ? JN= J J d J0d […]

链接列表头地址更改C.

我创建了我的结构的链接列表,但由于某种原因,每次我添加另一个链接它改变头地址,但我希望y头地址是第一个条目。 这是我的代码: struct checkPoints *tgh = NULL; struct checkPoints **linkedlist = &tgh; struct checkPoints *cp = malloc(sizeof (struct checkPoints)); chPo = fopen(fileName, mode); if (chPo == NULL) { printf(“Can’t find the files.”); exit(1); } else { for (i = 0; i dropOut, &cp->currentPoint, &cp->competitor, &cp->hour, &cp->minute); cp->next = NULL; if (*linkedlist == NULL) { printf(“ONCE”); […]

为什么scanf()在填充数组时不会产生内存破坏错误。

给定一个包含5个元素的数组,众所周知,如果使用scanf()读取5个元素,则scanf()将填充数组,然后通过将空字符’\ 0’放入第6个元素来破坏内存没有产生错误(我称之为第6个元素,但我知道它的内存不属于数组)如下所述: char数组的空终止 但是,当您尝试读入6个或更多元素时,会生成错误,因为操作系统检测到内存正在被破坏并且内核发送信号。 有人可以清理为什么在上面的内存崩溃的第一种情况下没有生成错误? 示例代码: // ex1.c #include int main(void){ char arr[5]; scanf(“%s”, arr); printf(“%s\n”, arr); return 0; } 编译,运行并输入四个字符:1234。这将它们正确地存储在数组中并且不会破坏内存。 这里没有错误。 $ ./ex1 1234 1234 再次运行并输入五个字符。 这会破坏内存,因为scanf()在第5个元素后面的内存中存储了一个额外的’\ 0’null字符。 没有生成错误。 $ ./ex1 12345 12345 现在输入我们希望破坏记忆的六个字符。 生成的错误看起来像(即我猜)它是内核发送的信号的结果,说我们只是以某种方式破坏了堆栈(本地内存)….为什么会为这个内存破坏生成错误但是不是前一个? $ ./ex1 123456 123456 *** stack smashing detected ***: ./ex1 terminated Aborted (core dumped) 无论我制作数组的大小,这似乎都会发生。

如何从AT CMGL响应中检索电话号码?

我有一个用C编写的应用程序,它使用AT命令从调制解调器读取文本消息。 调制解调器的典型AT响应如下所示: +CMGL: 1,”REC READ”,”+31612123738″,,”08/12/22,11:37:52+04″ 代码当前设置为仅从此行检索id,这是第一个数字,并使用以下代码执行此操作: sscanf(line, “+CMGL: %d,”, &entry); 这里,“line”是包含来自调制解调器的行的字符数组,“entry”是存储id的整数。 我尝试像这样扩展这段代码: sscanf(line, “+CMGL: %d,\”%*s\”,\”%s\”,”, &entry, phonenr); 我想我会使用%* s来扫描第一对引号中的文本并跳过它,然后将下一对引号(电话号码)中的文本读入phonenr字符数组。 这不起作用(%* s显然读取“REC”,下一个%s不读取任何内容)。 一个额外的挑战是文本不限于“REC READ”,它实际上可能是很多东西,也是一个没有空间的文本。

scanf中的换行符(\ n)

假设我写下面的代码: #include int main() { int a,b; scanf(“%d\n”,&a); printf(“%d”,a); return 0; } 输入并且光标在下一行闪烁而不打印a的值。 但是如果我删除\n字符,它会在下一行自动打印a的值。 即使我在scanf ( scanf(“%d\n”,&a); )中的%d之前放置一个\n ,它也不是将光标移动到下一行,而是取输入而不是输入在下一行。 那么, scanf自动接收下一行的输入吗? 并且\n不能与scanf函数一起使用?? 实际上,我的问题是要我在三行中输入三个整数。 写入Input: Three integers on three lines. 但是在尝试在scanf使用\n时,它只是在获取输入后显示下一行中的光标闪烁。

在二进制模式下使用fscanf

在二进制模式下打开文件时使用fscanf是不是很糟糕? 我似乎无法在互联网上找到任何合理的东西。 我试图打开并读取PPM文件,我发现了这个 ,但我不确定使用fscanf是否可以? 使用netpbm不行,是的。 用畏惧读这个看起来很痛苦。

为什么我输入句子跳过其他scanf

如果我为任何char scanf打开输入类似“asdasd asd asdas sad”的句子,它将跳过其他scanfs。 如果我输入obligation scanf this sentence ,它将写入obligation scanf这个和下一个scanf将被跳过,但自动将是sentence word字段的字段… 这是代码: while(cont == 1){ struct timeval tv; char str[12]; struct tm *tm; int days = 1; char obligation[1500]; char dodatno[1500]; printf(“Enter number of days till obligation: “); scanf(” %d”, &days); printf(“Enter obligation: “); scanf(” %s”, obligation); printf(“Sati: “); scanf(” %s”, dodatno); if (gettimeofday(&tv, […]