gpt4 book ai didi

c - "printf( "行读取 : %s\n ", input );" wont print out the full input string. C编程

转载 作者:太空宇宙 更新时间:2023-11-04 06:18:29 24 4
gpt4 key购买 nike

程序应该打印这个:

$ this is a test
Line read: this is a test
Token(s):
this
is
a
test
4 token(s) read

但是它切断了 Line read: to this:

$ this is a test
Line read: this
Token(s):
this
is
a
test
4 token(s) read

它只接受输入的第一个单词...

代码:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main(int argc, char const *argv[])
{
char input[ 256 ];
char *token;

while ( 1 )
{
printf("$ ");

fgets( input, 256, stdin );
int count = 0;
token = strtok( input, " \n" );
if ( count == 0 && strcmp( input, "exit" ) == 0 )
{
exit( 0 );
}

printf( "Line read: %s\n", input );
printf( "Token(s): \n" );

while( token != NULL )
{
count++;
printf( " %s\n", token );
token = strtok( NULL, " \n" );
}

printf( "%d token(s) read\n\n", count );
}
return 0;
}

最佳答案

strtok() 修改输入字符串,在每个标记的末尾放置一个空字节。所以当你这样做时:

token = strtok(input, " \n");

它在 input 的第一个单词后放置一个空字节。当您打印 input 时,该空字节终止了字符串。

将打印 input 的行移到第一次调用 strtok() 之前。或者复制 input 并使用 strtok() 对其进行操作。

关于c - "printf( "行读取 : %s\n ", input );" wont print out the full input string. C编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40352320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com