【问题标题】:Scanf parsing a stringScanf解析字符串
【发布时间】:2019-03-11 14:14:20
【问题描述】:

我正在尝试开发一种方法来解析每个元素用逗号分隔的文件。

我正在尝试找出一种使用scanf 来分隔元素的方法。我尝试使用scanf("%[^,]",buffer),但遇到堆栈粉碎错误。

也不要向我推荐我尝试过的其他文章。请让我知道如何使用我的scanf 作为分隔符。

我的输入如下:

+,-,*,/,%,abcdefghijklmnopqrstuvwxyz,0123456789,(,),;,=, \t\n

下面是代码

       char buffer[MAX_LINE_LENGTH];
for (int i = 0; i < returnTable->numberOfClasses-1; i++) {
    scanf("%s ",buffer);
    buffer[strlen(buffer)] = '\0';
    returnTable->inputSymbolClasses[i] = malloc((sizeof(char) * (strlen(buffer) )+ 1));
    strcpy(returnTable->inputSymbolClasses[i],buffer);
}

【问题讨论】:

  • 关于:returnTable-&gt;inputSymbolClasses[i] = malloc((sizeof(char) * (strlen(buffer) )+ 1)); 表达式:sizeof(char) 在 C 标准中定义为 1。将任何内容乘以 1 没有任何效果,表达式只会使代码混乱。建议删除该表达式
  • 关于:scanf("%s ",buffer); 这将在遇到任何“空白”时停止扫描,因此不会输入整行

标签: c parsing scanf delimiter


【解决方案1】:

我为任何为此苦苦挣扎的人找到了答案,请使用scanf("%[^,],",buffer) 以逗号分隔。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2021-01-29
    相关资源
    最近更新 更多