无法读取由strtok函数生成的字符串

zhangdi
 #Function1       
    char command[256];
    char *token;
    char *token2;
        const char s[2] = " ";

    fprintf(stdout, "$ Please enter a command \n");
    fflush( stdout );
    fgets ( command, 256, stdin );
    token = strtok(command, s);
    token2 = strtok(NULL, s);

    if ((fp= fopen(token2, "r")) == NULL) {
        printf("cannot open file");
        exit(1);}

#Function 2

    char command[256];
    char *token;
    char *token2;
        const char s[2] = " ";

    fprintf(stdout, "$ Please enter a command \n");
    fflush( stdout );
    fgets ( command, 256, stdin );
    token = strtok(command, s);
    token2 = strtok(NULL, s);

    if ((fp= fopen("dfile.txt", "r")) == NULL) {
        printf("cannot open file");
        exit(1);}

这两个函数需要一个字符串(在这种情况下,字符串始终为“ loaddungeon dfile.txt”)。这两个函数几乎相同,只是有一点点差异。在第二个函数中,我将token2更改为“ dfile.txt”。

第一个功能打印出“无法打开文件”

而第二个函数成功读取文件。

但是我尝试在第一个函数中打印token2,如下所示

printf("%s\n", token2);

它显示“ dfile.txt”。

这怎么可能呢?为什么第一个函数无法读取与“ dfile.txt”完全相同的token2。有人可以解释吗?提前致谢。

斯蒂芬·莱希纳(Stephan Lechner)

可能是因为token2末尾的换行符(调试器显示了它);当读入一行时,读入fgets的字符串通常'\n'在末尾包含换行符尽管在控制台中不明显,但此字符可能会影响其他一些功能(例如fopen,然后可能找不到文件)。因此,删除尾随的新行(如本SO答案所述):

token2 = strtok(NULL, s);

char *eol;
if (token2 && (eol=strchr(token2,'\n')))
    *eol = 0x0;

if ((fp= fopen(token2, "r")) == NULL) {
    printf("cannot open file");
    exit(1);}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

字符串令牌strtok函数逻辑

来自分类Dev

strtok无法正确分割字符串

来自分类Dev

使用strtok函数在C中拆分字符串

来自分类Dev

使用strtok函数在C中拆分字符串

来自分类Dev

C ++字符串无法读取内存

来自分类Dev

无法读取MySql字符串值

来自分类Dev

返回由从输入读取的行构成的字符串

来自分类Dev

如何读取由字符串组成的字典作为键

来自分类Dev

Python从字符串生成函数名

来自分类Dev

无法动态生成unicode字符串

来自分类Dev

读取字符串的各个字符和由字符串数组指向的字符串本身

来自分类Dev

无法使用fgets()函数读取循环结构内的字符串

来自分类Dev

读取整数后C无法读取字符串

来自分类Dev

从csv读取,strtod无法读取带数字的字符串

来自分类Dev

strtok()读取字符串末尾的空格,并且不返回NULL

来自分类Dev

由字符串组成的numpy数组的连接函数

来自分类Dev

对象文字的调用函数,由字符串表示-JavaScript

来自分类Dev

如何传入字符串以由getJSON的函数填充?

来自分类Dev

strtok无法按预期方式工作,无法拆分字符串

来自分类Dev

用strtok分隔字符串

来自分类Dev

用strtok()分割字符串出错

来自分类Dev

在C strtok()中拆分字符串

来自分类Dev

如何将lambda函数读取为字符串?

来自分类Dev

在Rust中将字符串读取并解析为Iterator的函数

来自分类Dev

读取字符串表jquery ajax成功函数

来自分类Dev

在函数内部使用 JSON 读取字符串

来自分类Dev

如何读取作为 C 中函数参数的字符串?

来自分类Dev

sendSMS()方法无法读取字符串

来自分类Dev

Inno Setup:Exec无法读取字符串?