我必须从许多字符串/ ASCII代码中制成一个char数组。 虽然添加字符串可以很好地工作,但是添加ASCII码则不能。
char line[50];
strcat(line, " "); // works
for (int i = 0; i < 29; i++) strcat(line, '196'); // supposed to add lines
for (int i = 0; i < 29; i++) strcat(line, 196);
这些都不起作用。我总是收到此错误消息(必须进行翻译)。
test.exe中0x00E620E7处的异常:0xC0000005:读取位置0x00313936时访问冲突。
我想念什么?谢谢您的帮助
答案 0 :(得分:1)
如果您知道ascii代码,为什么不直接编写呢?
line[i] = 196;
这项工作可以吗?
答案 1 :(得分:1)
在C中,字符串写在双引号之间。
示例"abc"
是一个字符串。
对于strcat()
,您应该传递指向字符串的dst和str指针。
在第2行中,您正确使用了strcat()
。 line是指向char数组的指针,而" "
是指向字符串文字的指针。
但是在第3行中,'196'
不是字符串。如果要在字符串中写入196,则应为strcat(line, "196");
第4行相同。
请注意以下几点。
char line[50] = ""
; for(..,i < MAX-1,..) line[i]=196; line[i+1]='\0';
或for(..,i < MAX-1,..) strcat(line, "_"/* Assuming this is the character for 196*/);
答案 2 :(得分:0)
196
是char
(或int
),而不是字符串,并且不是strcat
的有效参数(表示“字符串串联”) 。 '196'
完全无效,不会编译。
字符串是以'\0'
结尾的字符的序列。如果要附加单个字符,则必须手动处理(通过直接分配,例如line[i] = 196;
),或者必须使用带有两个字符的_dummy helper string_,例如:char dummy[2]; dummy[0] = 196; dummy[1] = '\0';
然后strcat(line,dummy);