从fgets获得第一个单词

时间:2017-01-28 21:00:56

标签: c

我正在使用strncpy(justLine, buf, charsToWrite)将输入传递到char input[255]。现在我想从中得到第一个字。

我管理了这样的事情:

int spaceIndex = strchr(input, ' ');
char firstWord[spaceIndex];
strncpy(firstWord, input, spaceIndex-1);
firstWord[spaceIndex] = '\0';

不幸的是,这不能正常工作。你有什么想法吗?

我也尝试过使用strtok,但它正在弄乱input

1 个答案:

答案 0 :(得分:-1)

您需要分配大小为spaceIndex+1.字符串 您的代码几乎是正确的,当您分配'\0'strncpy时,您只是不记得char终结符是字符串的一部分。

您需要两个修复:

  1. 再添加一个firstWordchar firstWord[spaceIndex + 1];

    strncpy

  2. 请注意调用strncpy(firstWord, input, spaceIndex+1);时的额外字节:

    strncpy(firstWord, input, sizeof(firstWord));

    我建议实际使用缓冲区大小作为参数:

    { "name": "HalfScreen", "version": "1.0", "manifest_version": 2, "description": "Larger window screen for youtube", "browser_action": { "default_icon": "icon.png" }, "permissions": [ "tabs" ], "content_scripts": [ { "matches": ["https://www.youtube.com/watch*", "http://www.youtube.com/watch*"], "js": ["inject.js"] } ], "background": { "scripts": ["background.js"] }

  3. 阅读strncpy's documentation,虽然你正确使用它,但这个功能真的很棘手。