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