繁体   English   中英

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

[英]C - How do I attach ASCII-Code to char array

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

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

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

line[i] = 196;

这样行吗?

在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 for(..,i < MAX-1,..) line[i]=196; line[i+1]='\\0'; for(..,i < MAX-1,..) line[i]=196; line[i+1]='\\0'; for(..,i < MAX-1,..) strcat(line, "_"/* Assuming this is the character for 196*/);

196是一个char (或int ),而不是字符串,并且它不是strcat的有效参数(这意味着“字符串串联”)。 '196'根本无效,也不会编译。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM