用C语言读字符串

用C语言读字符串,c,string,C,String,我必须在C中读取不同长度的字符串。我可以使用指针数组并在循环中使用alloc来读取字符串。问题是程序的输入是一系列句子,如下所示: Rene Decartes曾经说过, “我想,所以我是。” 还有更多。如何通过程序检查用户是否已完成输入句子。循环数组键,直到找到“\0”字符。您应该使用“行尾”作为分隔符,一次处理一行。您可以将它们存储到**char——当然是正确分配的。一定要注意边界,最好使用strncpy()而不是strcpy()——后者是不安全的。使用一些分隔符,让用户在完成所有句子后输入,

我必须在C中读取不同长度的字符串。我可以使用指针数组并在循环中使用alloc来读取字符串。问题是程序的输入是一系列句子,如下所示:

Rene Decartes曾经说过,
“我想,所以我是。”


还有更多。如何通过程序检查用户是否已完成输入句子。

循环数组键,直到找到“\0”字符。

您应该使用“行尾”作为分隔符,一次处理一行。您可以将它们存储到
**char
——当然是正确分配的。一定要注意边界,最好使用
strncpy()
而不是
strcpy()
——后者是不安全的。

使用
一些分隔符
,让用户在完成所有句子后输入,,
此外,为了检查每一行的结尾,请使用“\n”作为分隔符进行检查,

如果我理解了这个问题,您不是在寻找“行末”信号;你在寻找“句子结束”的信号


一种常见的方法是要求用户在完成后输入一个空行。然后(取决于您读取字符串的方式),您可以检查空字符串或仅包含单个(换行)字符的字符串。

您可以告诉用户键入一个特殊符号或字符串,以指示输入已结束。例如,您可以告诉用户在新行中输入
,以终止输入。签出@Adam Liss的答案。

也许他甚至在寻找文件的结尾(输入结束,流结束)。您可以通过检查各种输入函数的返回值来检测输入流的结束。您没有告诉我们您用于读取输入的函数。例如,使用
fgets()
和标准输入

#include <stdio.h>

#define BUFFERSIZE 256
char buffer[BUFFERSIZE];
...

while (fgets (buffer, sizeof buffer, stdin) != NULL) {
   /* Do something with buffer. */
}
/* No more lines on stdin. */
#包括
#定义缓冲区大小256
字符缓冲区[BUFFERSIZE];
...
while(fgets(buffer,sizeof buffer,stdin)!=NULL){
/*对缓冲区做些什么*/
}
/*stdin上没有更多的线路了*/

Hi Mario,在每句话之后,我可以预期一个“\0”“\0”定义了字符串的结尾。如果你说
charsomething[]=“abc”如果是长度为4的数组,包含a、b、c和a\0。是的,如果它是一个字符串,那么肯定会有一个。你是从标准输入中读取这些字符串,读入这个指针数组吗?或者你是通过其他方法将它们预先打包到数组中的?这样想,如果我必须在运行时阅读用户的一些句子,而不知道他将键入多少句子,该怎么办?这样想,如果我必须在运行时从用户那里读入一些句子,而不知道他将键入多少句子,该怎么办?当然,我可以逐行处理它,但我如何知道用户已经完成了将一些分隔符作为文本结尾的输入标记。或者使用时间限制。如果在X秒后什么也没有发生,那么您就完成了。