这是C中的基本字符计数程序:
#include <stdio.h>
#include <stdlib.h>
int main(){
long nc = 0;
while(getchar() != EOF)
nc++;
printf("%ld\n" , nc);
}
Run Code Online (Sandbox Code Playgroud)
当我输入"abcde"作为输入时,它显示值6(触发EOF测试后),换行符字符+1.但我怀疑的是getchar(),正如其名称本身所暗示的那样,只考虑了1个字符.但是当我一口气进入"abcde"时,它仍然有效.为什么会这样?我在这做什么问题?
我正在使用类实现链接列表,我发现了一些我无法解释的内容.这是代码:
struct Node{
int data;
Node *next;
};
class LinkedList{
public:
int msize = 0;
Node *head;
Node *tail;
void append(Node mynode){
if(msize == 0){
head = &mynode;
tail = &mynode;
msize++;
}
else{
(*tail).next = &mynode;
tail = &mynode;
msize++;
}
}
void mergeList(LinkedList l2){
cout << (*head).data;
}
};
Run Code Online (Sandbox Code Playgroud)
我面临的问题是mergeList函数,它将另一个链表作为输入.现在,这是main函数中的代码:
int main(){
LinkedList l1;
LinkedList l2;
Node n1 , n2;
n1.data = 132;
n2.data = 123;
l1.append(n1);
l2.append(n2);
l1.mergeList(l2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是问题:在函数中mergeList,输出的值是1,而它应该是132,因为它n1是链表的头节点l1 …
我是C语言的新学习者.我最近了解了getchar()函数.我写了一个程序来计算输入中的单词数.该计划如下:(我使用代码块):
#include <stdio.h>
main(){
int c, nw; /*nw stands for NUMBER OF WORDS*/
while((c=getchar())!=EOF){
if (c==' '||c=='\t'||c=='\n')
++nw;
}
printf("NUMBER OF WORDS ARE:%d",nw);
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,它接受输入,但没有OUTPUT.无论你输入多少次,它都会继续输入.
我试图搜索这一百万次,但我找不到答案.
但是,有人告诉我在while循环中包含一个Ctrl + D中断.我试着这样做,但结果相同.
如果有人有解决方案帮助我.从过去的2周开始,我试图找出问题所在.
谢谢!