所以我正在接受这样的文本文件:
Hello. This is my test! I need to print sentences.
Can I do it? Any help is welcomed. Thanks!
我正在尝试输出:
1. Hello.
2. This is my test!
3. I need to print sentences.
4. Can I do it?
...and so on....
这是我到目前为止所写的内容:
#include <stdio.h>
#include <stdlib.h>
main() {
int storage[50];
int i = 0 ;
int linecount = 1 ;
char c;
for (;;) {
c=getchar();
if(c == '\n'){
c == '\0';}
storage[i] = c;
i++;
if (c == '.' || c == '!' || c == '?') {
int j ;
printf("%d. ", linecount++);
for (j = 0; j < i; j++) {
printf("%c", storage[j]); }
i = 0 ;
printf("\n");
}
}
}
结果是输出结果:
1. Hello.
2. This is my test!
3. I need to print sentences.
4.
Can I do it?
5. Any help is welcomed.
6. Thanks!
我的第一个问题是它打印了一个&#39; \ n&#39;对于第4行,我认为我的代码是:
if(c == '\n'){
c == '\0';}
会照顾这个,但事实并非如此。
我的第二个问题是它在第一条记录后添加了额外的空格字符。 我知道这是因为我使用了print语句:
"%d. "
并且句子的开头还有一个与最后一句话分开的空间,但我不确定如何解决这个问题。任何帮助都会很棒!谢谢! -qorz
答案 0 :(得分:0)
出现第一个问题是因为您需要使用=
运算符,而不是==
。您实际上是在测试值而不是将数组位置更改为\0
。
要解决此问题,请更改
if(c == '\n'){
c == '\0';
}
到
if(c == '\n'){
c = '\0';
}
关于第二个问题,请查看here。
答案 1 :(得分:0)
此处==
不是赋值运算符,请将其更改为=
if(c == '\n'){
c = '\0';
}
答案 2 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
int storage[50];
int i = 0 ;
int linecount = 1 ;
int c;
while(EOF!=(c=getchar())) {
storage[i++] = c;
if (c == '.' || c == '!' || c == '?') {
int j ;
printf("%d. ", linecount++);
for (j = 0; j < i; j++) {
printf("%c", storage[j]);
}
printf("\n");
i = 0 ;
while(isspace(c=getchar()))
;//skip white spaces
ungetc(c, stdin);
}
}
return 0;
}