Tag: newline

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时,它只是在获取输入后显示下一行中的光标闪烁。

为什么当我们在文件中写\ n时它会转换为\ r \ n组合?

我从书中读到这个概念,当我们尝试使用fputs()将文件写入文件时,fputs()将\ n转换为\ r \ n组合,然后如果我们使用fgets()读回同一行,则反向转换发生意味着\ r \ n回转换为\ n。 我不知道这背后的目的是什么?

将换行符插入GtkTextView小部件(GTK +编程)

我有一个按钮,当点击时复制并将GtkEntry小部件中的文本附加到GtkTextView小部件中。 (此代码是在GTK +开发基础的“文本视图小部件”一章中找到的示例的修改版本。) 我想在复制和追加文本之前插入一个换行符,这样每行文本都会在GtkTextView小部件中自行排列。 我该怎么办? 我是GTK +的新手。 这是代码示例: #include typedef struct { GtkWidget *entry, *textview; } Widgets; static void insert_text (GtkButton*, Widgets*); int main (int argc, char *argv[]) { GtkWidget *window, *scrolled_win, *hbox, *vbox, *insert; Widgets *w = g_slice_new (Widgets); gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), “Text Iterators”); gtk_container_set_border_width (GTK_CONTAINER (window), […]

为什么getchar()在printf语句后读取’\ n’?

我提示用户输入数组的长度,使用此输入初始化char []数组,然后提示用户输入要输入char []数组的消息。 我正在使用getchar()读取用户消息的第一个字符。 但是, getchar()在读取任何用户输入之前正在读取换行符’\n’ 。 它似乎是从前一个提示用户的printf语句中获得’\n’ … 这是相关的代码: #include int main(void) { int len = 0, originalLen = 0; printf(“\n\nWhat is the length of the array? “); scanf(“%d”, &originalLen); char str[originalLen]; // intitializing the array printf(“Enter a message to enter into the array: “); char target = getchar(); str[len] = target; // why […]

使用getc从控制台读取\ r(回车)vs \ n(换行符)?

我正在写一个基本上等待用户点击“输入”然后做某事的function。 我发现在测试时有效的方法如下: #include int main() { int x = getc(stdin); if (x == ‘\n’) { printf(“carriage return”); printf(“\n”); } else { printf(“missed it”); printf(“\n”); } } 我的问题,以及我最初尝试的是: if (x == ‘\r’)但是在测试中,程序没有抓住我进入。 ‘\n’似乎对应于我从控制台点击进入。 有人可以解释这个区别吗? 另外,要进行validation,将其写为if… == “\n”将表示字符串文字? 即用户真的必须从控制台输入”\n” ,对吗?

C中的EOF问题

我正在编写一个程序,它应该读取两个可以包含换行符和其他各种字符的字符串。 因此,我使用EOF(Ctrl-Z或Ctrl-D)结束字符串。 这适用于第一个变量,但是使用第二个变量,然而,这似乎是有问题的,因为显然某些东西卡在输入缓冲区中而用户无法输入任何内容。 我试着用while (getchar() != ‘\n’);清理缓冲区while (getchar() != ‘\n’); 和几个类似的变化,但似乎没有任何帮助。 所有清洁尝试都导致无限循环,如果没有清洁,添加第二个变量是不可能的。 这两个变量的字符都是在这样的循环中读取的: while((c = getchar()) != EOF) ,这表明它是我在缓冲区中停留的EOF。 或者它是否以其他方式影响程序的行为? 我正在使用的逻辑有什么问题吗? 经过几个小时的挣扎,我开始有点绝望了。 [编辑:下面添加代码] [编辑2:clearerr()似乎使这个EOF解决方案毕竟有效。 它似乎以我在Linux下的原始forms运行,我昨天在Windows上试用它。 码: #include #include int main(void) { int x = 0; int c; char a[100]; char b[100]; printf(“Enter a: “); while((c = getchar()) != EOF) { a[x] = c; x++; } […]

为什么这段代码打印两次?

可能重复: 在linux gcc中使用fork() #include void main () { printf (“ciao”); fork (); } 我有一些关于C优化的想法,但我不确定。 希望你知道答案。