繁体   English   中英

C:如何从标准输入中读取多个字符串

[英]C: how to read many strings from stdin

我需要从标准输入到 EOF 读取许多长度可变的字符串。 字符串由连续的字符组成,不以空格分隔,并且字符串没有最大长度。

使用:

char st[101];
while(scanf("%100s",st) != EOF){ //divide the input into parts of 100 chars
    int i;
    for(i=0; i<strlen(st);i++){
        printf("%c",st[i]);
    }
}

我不知道当前字符串是前一个字符串的一部分还是新字符串的一部分,因为它全部打印在一行中(我不知道在哪里打印“\\n”)。

样本输入

aaaaaaaaa[...]aaaaa

bbbbbbbbb[...]bbbbb

输出

aaaa[...]aabbbbbb[...]bbbb

有什么解决办法吗?

PS 使用getchar()我无法处理 EOF。

以下是使用getchar处理EOF

int c;
while ((c = getchar()) != EOF) {
    putchar(c);
}

此代码将在 stdout 上复制其输入。

如果您想一次处理整行,最简单的方法是使用getline如果有)(它是 POSIX,而不是标准 C):

char *line = NULL;
size_t size = 0;

ssize_t nread;
while ((nread = getline(&line, &size, stdin)) != -1) {
    // nread characters were read
    do_stuff_with(line);
}
free(line);

如果您没有getline ,您可以自己编写(使用getcharrealloc )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM