现在我正在尝试这个:
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: %s %s sourcecode input", argv[0], argv[1]);
}
else {
char source[] = "This is an example.";
int i;
for (i = 0; i < sizeof(source); i++) {
printf("%c", source[i]);
}
}
getchar();
return 0;
}
这也不起作用:
char *source = "This is an example.";
int i;
for (i = 0; i < strlen(source); i++){
printf("%c", source[i]);
}
我收到错误
Test.exe 中 0x5bf714cf (msvcr100d.dll) 处出现未处理的异常:0xC0000005:在位置 0x00000054 读取时发生访问冲突。
(大致翻译自德语)
那么我的代码有什么问题吗?
你要:
for (i = 0; i < strlen(source); i++) {
sizeof 给出的是指针的大小,而不是字符串的大小。但是,如果您将指针声明为数组,它就会起作用:
char source[] = "This is an example.";
但如果将数组传递给函数,它也会衰减为指针。对于字符串,最好始终使用 strlen。请注意其他人关于更改 printf 以使用 %c 的说法。而且,考虑到 mmyers 对效率的评论,最好将对 strlen 的调用移出循环:
int len = strlen(source);
for (i = 0; i < len; i++) {
或者重写循环:
for (i = 0; source[i] != 0; i++) {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)