- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从文件中读取信息并以某种方式处理该信息。我需要将文件最左侧的所有单词组成一个数组,这些单词前面没有空格。但是,当我尝试显示该字符数组的内容时,我一直得到非常奇怪的输出。
这是示例输入:
# Sample Input
LA 1,3
LA 2,1
TOP NOP
ADDR 3,1
ST 3, VAL
CMPR 3,4
JNE TOP
P_INT 1,VAL
P_REGS
HALT
VAL INT 0
TAN LA 2,1
例如,当我运行我的程序时,我的输出应该是:
TOP
VAL
TAN
相反,我得到:
a
aTOP
aVAL
aTAN
a
a
我不确定为什么会这样。我所做的任何小改动实际上都没有帮助,它们只是改变了我预期输出前面的内容。有时它是 ASCII 值 0 或 20 个字符。希望有人能帮我解决这个问题,因为它快把我逼疯了。
这是我的代码:
#include <string>
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <fstream>
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[])
{
// If no extra file is provided then exit the program with error message
if (argc <= 1)
{
cout << "Correct Usage: " << argv[0] << " <Filename>" << endl;
exit (1);
}
// Array to hold the registers and initialize them all to zero
int registers [] = {0,0,0,0,0,0,0,0};
string memory [16000];
string symTbl [1000][1000];
char line[100];
char label [9];
char opcode[9];
char arg1[256];
char arg2[256];
char* pch;
// Open the file that was input on the command line
ifstream myFile;
myFile.open(argv[1]);
if (!myFile.is_open())
{
cerr << "Cannot open the file." << endl;
}
int counter = 0;
int i = 0;
while (myFile.good())
{
myFile.getline(line, 100, '\n');
// If the line begins with a #, then just get the next line
if (line[0] == '#')
{
continue;
}
// If there is a label, then this code will run
if ( line[0] != '\t' && line[0]!=' ')
{
if( pch = strtok(line-1," \t"));
{
strcpy(label,pch);
cout << label << endl;
}
if (pch = strtok(NULL, " \t"))
{
strcpy(opcode,pch);
}
if (pch = strtok(NULL, " \t,"))
{
strcpy(arg1,pch);
}
if (pch = strtok(NULL, ","))
{
strcpy(arg2, pch);
}
}
}
return 0;
}
最佳答案
您正在将 line-1
传递给 strtok
,这将导致它返回一个指向字符串开头之前字符的指针;访问 line[-1]
将产生未定义的行为。 strtok
接受一个指向字符串开头的指针。
在 if( pch = strtok(line-1,"\t"))
语句的末尾还有一个 ;
,它使if
测试并导致 block 运行,即使 pch
为 NULL
。
关于c++ - 随机 ascii 字符不断出现在输出中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12439420/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!