C-如何将ASCII码附加到char数组

时间:2018-10-30 04:45:59

标签: c arrays string char ascii

我必须从许多字符串/ 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时访问冲突。

我想念什么?谢谢您的帮助

3 个答案:

答案 0 :(得分:1)

如果您知道ascii代码,为什么不直接编写呢?

line[i] = 196;

这项工作可以吗?

答案 1 :(得分:1)

在C中,字符串写在双引号之间。 示例"abc"是一个字符串。

对于strcat(),您应该传递指向字符串的dst和str指针。

在第2行中,您正确使用了strcat()。 line是指向char数组的指针,而" "是指向字符串文字的指针。

但是在第3行中,'196'不是字符串。如果要在字符串中写入196,则应为strcat(line, "196");

第4行相同。

请注意以下几点。

  • 在第1行中,您只是声明char数组而不是对其进行初始化。因此它可以包含任何内容。因此,如果分配的数组中没有'\ 0'字符,则第2行中的strcat也可以从数组外部开始。因此最好将其初始化-char line[50] = "";
  • 关于第2行和第3行:如果要连续使用charaqcter-196,可以执行以下操作之一-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)

196char(或int),而不是字符串,并且不是strcat的有效参数(表示“字符串串联”) 。 '196'完全无效,不会编译。

字符串是以'\0'结尾的字符的序列。如果要附加单个字符,则必须手动处理(通过直接分配,例如line[i] = 196;),或者必须使用带有两个字符的_dummy helper string_,例如:char dummy[2]; dummy[0] = 196; dummy[1] = '\0';然后strcat(line,dummy);