2011-02-03 58 views
0

一个如何将一个字符串的结尾附加一个空字符从对各行不同大小的弦......像这样一个文件的读取:从C中的文件读取字符串后放置一个空值?

AAAAA BBBBB

AAAA BBBBBBB

AAAAA BBBBB

我只想读取每行的第一个字符串。我想把它放到一个字符串中。但是,C不会在字符串末尾放置空值,您必须自己做。如何在使用fscanf时在字符串末尾获得空字符...可能吗?我是否需要使用另一个函数来读取文件而不是fscanf?

对不起,这个简单的问题。我只是无法在任何地方找到答案...

+0

你试过了吗?它与你期望的有什么不同? – 2011-02-03 22:27:47

+0

是的。我试图做一个strcat我读入的字符串来处理null,但我得到错误。 – Bri 2011-02-03 22:29:26

+0

可能是另一个错误,正如米克尔说的那样,它已经被添加了。 – 2011-02-03 22:32:04

回答

1

你的意思是你想要在每行结尾处有一个空值?

Linux fscanf文档说如果您使用的是%s,则会自动添加null。

s  Matches a sequence of non-white-space characters; 
      the next pointer must be a pointer to character array 
      that is long enough to hold the input sequence and 
      the terminating null character ('\0'), which is 
      added automatically. 

还是你的意思,你想有一个空处处有输入文件的空间?

strtok将是实现这一目标的一种方式。

0

声明最大行长度为任意大小的字符的缓冲区。使用fgets()函数读取缓冲区中的每一行... fgets()将null终止缓冲区。

0

您应该使用standard-lib str函数来构建字符串。他们会终止'\ 0'。

#define MAXLINE 1000 
char line[MAXLINE], yourstring[MAXLINE]; 
while(fgets(line,MAXLINE,yourfilepointer)) 
{ 
    sscanf(line,"%s",yourstring); /* here has yourstring ever a terminating '\0' */ 
    printf("first word is: %s\n",yourstring); 
} 
0

创建两个缓冲区:

char buf1[1000], buf2[1000]; 

借此读取一行中的第一个字:

fscanf(f,"%s", buf1); 

然后用它来读取行的其余部分:

fscanf(f,"%[^\n\r]s", buf2); 

现在你有第一个词buf1buf2的其余行。

相关问题