ale*_*xfi 1 c console-application strcat
我正在编写一个小 C 程序,想知道为什么我在控制台中的输出是“0”,“0”[...]?我期望的输出是“ab”,“ac”,[...]。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
int j;
char string[] = "abc";
char output[8];
int length = size(&string[0]);
for(i=0; i<length; i++) {
for(j=0; j<length; j++){
char a = string[i];
strcat(output, &a);
char b = string[j];
strcat(output, &b);
printf("%c\n", output);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误#1。您尚未初始化output[],因此strcat()无法有效地找到nul要附加的终止符。
output[0] = 0;
Run Code Online (Sandbox Code Playgroud)
错误#2。 strcat()无论如何,这不是附加字符的正确方法。
错误#3。你的循环控制不正确。见下文。
错误#4。你的length大小就像指针一样char*。
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i, j;
char string[] = "abc";
char output[8];
int length = strlen (string); // corrected
for(i=0; i<length-1; i++) { // amended loop
for(j=i+1; j<length; j++) { // amended loop
output[0] = string [i];
output[1] = string [j];
output[2] = 0; // string terminator
printf("%s\n", output); // uses string type not char
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
程序输出:
ab
ac
bc
Run Code Online (Sandbox Code Playgroud)