我正在研究K&R第二版,在练习3-2中遇到了一个奇怪的问题。由于某些原因,只有\n出现的方式和我原来字符串中的两个选项卡一样,一个显示为\,而另一个则完全丢失。我还会在字符串中得到不同数量的垃圾,最新的输出字符串是"I \ am (微符号mu) . \n“。更奇怪的是,\n和句号之间还有比原来多几个空格。我查找了解决方案(https://code.google.com/p/k-and-r-exercises/source/browse/3-2.c),它与我所做的非常相似。此外,我做了两个主要的输入法,'\‘和't',并使\t显示没有问题。我很难理解是什么导致了这一错误,我可能真的需要你的建议。
#include<stdio.h>
#include<string.h>
void switchFunction(char s[], char t[]);
main(){
char originalString[] = "I \t am \t . \n \0";
char copiedString[1000];
char a, b;
switchFunction(originalString, copiedString);
printf(originalString);
printf("\n");
printf(copiedString);
printf("\n");
a = '\\';
b = 't';
putchar(a);
putchar(b);
}
void switchFunction(char s[], char t[]){
int i;
int j = 0;
int originalStringLen;
originalStringLen = strlen(s);
printf("Original is %d characters.\n", originalStringLen);
for(i = 0; i < originalStringLen; ++i){
switch(s[i]){
case '\n':
t[j] = '\\';
j++;
t[j] = 'n';
j++;
break;
case '\t':
t[j] = '\\';
j++;
t[j] = 't';
j++;
break;
default:
t[i] = s[i];
j++;
}
}
t[j] = '\0';
}我对函数中新字符串中的每个字符做了一个putchar (当它们被分配时),并且得到了更多的垃圾字符,尽管\t的出现没有问题。
发布于 2014-06-23 17:15:17
这就是问题所在:
t[i] = s[i];你需要:
t[j] = s[i];https://stackoverflow.com/questions/24371506
复制相似问题