C strtok,回车输入

标签 c char strtok

我想读取数据:sample text opp 我看到这个: 样本(输入) 文本(输入) 反对(输入)

但是,我的代码运行不正常。

#include <stdio.h>
#include <stdlib.h>
int main(){
    char separator[] = " ";
    char *schowek;
    char *wejscie;

    gets(&wejscie);
    schowek = strtok(&wejscie,separator);

    while( schowek != NULL )
    {
        printf( "%s\n", schowek );
        schowek = strtok( NULL, separator );
    }

    return 0;
}

好的, 我有这个代码。

#include <stdio.h>
#include <stdlib.h>

int main()
{

    char * slowo[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
"eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
"twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety", "hundred",
"thousand", "million"};
    int liczba[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,40,50,60,70,80,90,100,1000,1000000};

    char n[]="";
    int i=0;

    char s1[]="zero";


    char separator[] = " ";

    char wejscie[1024];
    if (fgets(wejscie, 1024, stdin))
    {
        char* schowek = strtok(wejscie,separator); /* Removed '&'. */

        if(strcmp(wejscie,n)==0)
        {
            exit;
        }

        while (schowek)
        {
            printf("%s\n", schowek);
            schowek = strtok(NULL, separator);
        }
    }
    return 0;
}

他还好吗? 现在我想将字符串转换为数字。

示例输入

六 负七百二十九 一百万一百一

示例输出

6 -729 1000101

我该怎么做?

最佳答案

wejscie 是一个单元化指针,gets() 正在写入不应该写入的内存,可能导致段错误。请注意 gets() 容易受到缓冲区溢出的影响,因为它没有提供限制读取字符数的功能(请参阅 warning:gets function is dangerous )。使用 fgets()而不是 char[]:

char wejscie[1024];
if (fgets(wejscie, 1024, stdin))
{
    char* schowek = strtok(wejscie,separator); /* Removed '&'. */
    while (schowek)
    {
        printf("%s\n", schowek);
        schowek = strtok(NULL, separator);
    }
}

虽然与此程序无关,但请注意 strtok()不是线程安全的。

关于C strtok,回车输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15547089/

相关文章:

c++ - 条件中的多个表达式 (C/C++)

c - 如何使用 C99 标准类型在大多数平台上实现最大的可移植性和效率?

c++ - 传递 char* C++ 的地址

c - 如何使用 scanf() 在 C 中接受 char *

c - 当我使用 strtok() 时,有没有办法挑选出单个标记?

c - 在 C 中使用 Strtok() 时出现段错误

c - pragma omp for/parallel 不起作用?

c - 如何在错误情况下从头开始重新启动 main()?

java - 按元音数量对 ArrayList 中的字符串进行排序

C strtok 解析复杂字符串