【问题标题】:String manipulation with whitespaces带空格的字符串操作
【发布时间】:2021-04-05 23:55:27
【问题描述】:

我必须输入一个字符串并从中获取课程 ID 和课程名称。

我的代码是:

char word[200];
    int id=0;
    char *ptrWord;
    scanf("%[^\n]", word);
    printf("%s\n", word);
    id = strtol(word, &ptrWord, 10);

这些是有效输入的示例。

89110 Computer Science 101
89210 Advanced Programming 1
 89111   OOP 101

我的问题是,如何去掉 id 后面的空格? 例如,最后一个输入的课程名称是 OOP 101,但是使用这种方法我得到了名称前的空格,我不想要它们。

【问题讨论】:

  • 使用fgets 读取一行输入,然后使用strtok 将字符串分成两部分。
  • 获取整行。找到第一个和最后一个空格。第一个空格之前的字符串是第一个数字。最后一个字符串是第二个数字。中间的字符串是名称。根据需要从中间字符串中“去除”空格。

标签: arrays c string


【解决方案1】:

如果您的格式字符串包含空格字符,scanf 将丢弃输入流中该位置的空格。所以使用下面的代码:

scanf(" %[^\n]", word);

只有在您确定输入文件的格式正确时才能使用它。

如果该字段为空,此代码将失败 - 然后 scanf 会混淆并在尝试丢弃所有空格时丢弃换行符 \n - 您不能告诉它只丢弃普通空格。

【讨论】:

    猜你喜欢
    • 2015-04-04
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多