#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
int main(int argc, string argv[])
{
int i=0;
int x=0;
int n=0;
argv[i]=GetString()
printf("%c", toupper(argv[i][0]));
for (x=0, n=strlen(argv[i]); x<n; x++)
{
printf("%c", toupper(argv[i+1][0]));
}
printf("\n");
}
代码可以编译,但不会打印用户输入的姓名的首字母缩写。例如,约翰·史密斯:JS
。相反,我收到了段错误。
这个程序是CS50的initials.c。
最佳答案
虽然您没有显示 GetString()
的定义,但我很确定您没有正确调用它,因为它后面没有分号,而且您几乎肯定不想这样做覆盖argv[0]
。使用调试符号(GCC 中的 -g
)进行编译并在调试器中运行将告诉您哪一行代码导致了程序崩溃。
编辑:我的猜测是,当您尝试取消引用 argv[i+1]
(即 argv[1]
)时,您会崩溃code>,一个NULL
指针。但在调试器中运行可以确认或否定这一点。您似乎将循环参数列表的语法与从标准输入读取行的语法混淆了。
关于c - 为什么我的程序不打印名字的首字母? (CS50 缩写程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32683608/